Replace isAssignableFrom() with isInstance() where feasible

Closes gh-36899

Signed-off-by: Yanming Zhou <zhouyanming@gmail.com>
This commit is contained in:
Yanming Zhou
2026-06-15 15:16:18 +02:00
committed by GitHub
parent 0c60266986
commit cdc3c52640
31 changed files with 37 additions and 47 deletions
@@ -36,7 +36,7 @@ public class SimpleHandlerAdapter implements HandlerAdapter {
@Override
public boolean supports(Object handler) {
return WebHandler.class.isAssignableFrom(handler.getClass());
return (handler instanceof WebHandler);
}
@Override
@@ -65,10 +65,10 @@ public class ErrorsMethodArgumentResolver extends HandlerMethodArgumentResolverS
// This is done to enable early argument resolution here. When the Mono actually
// completes it is replaced in the model with the actual value.
if (Mono.class.isAssignableFrom(errors.getClass())) {
if (errors instanceof Mono) {
return ((Mono<?>) errors).cast(Object.class);
}
else if (Errors.class.isAssignableFrom(errors.getClass())) {
else if (errors instanceof Errors) {
return Mono.just(errors);
}
else {
@@ -76,7 +76,7 @@ public class RequestAttributeMethodArgumentResolver extends AbstractNamedValueSy
parameter.getGenericParameterType() + " doesn't support empty values.");
return toAdapter.fromPublisher(Mono.empty());
}
if (parameter.getParameterType().isAssignableFrom(value.getClass())) {
if (parameter.getParameterType().isInstance(value)) {
return value;
}
ReactiveAdapter fromAdapter = getAdapterRegistry().getAdapter(value.getClass());
@@ -99,7 +99,7 @@ public class WebSocketHandlerAdapter implements HandlerAdapter, Ordered {
@Override
public boolean supports(Object handler) {
return WebSocketHandler.class.isAssignableFrom(handler.getClass());
return (handler instanceof WebSocketHandler);
}
@Override
@@ -274,8 +274,7 @@ class HttpEntityMethodArgumentResolverTests {
Mono<Object> result = this.resolver.resolveArgument(param, new BindingContext(), exchange);
Object value = result.block(Duration.ofSeconds(5));
assertThat(value).isNotNull();
assertThat(param.getParameterType().isAssignableFrom(value.getClass())).as("Unexpected return value type: " + value.getClass()).isTrue();
assertThat(value).isInstanceOf(param.getParameterType());
return (T) value;
}
@@ -294,8 +294,7 @@ class MessageReaderArgumentResolverTests {
Mono<Object> result = this.resolver.readBody(param, true, this.bindingContext, exchange);
Object value = result.block(Duration.ofSeconds(5));
assertThat(value).isNotNull();
assertThat(param.getParameterType().isAssignableFrom(value.getClass())).as("Unexpected return value type: " + value).isTrue();
assertThat(value).isInstanceOf(param.getParameterType());
return (T) value;
}
@@ -233,9 +233,7 @@ class RequestBodyMethodArgumentResolverTests {
Mono<Object> result = this.resolver.readBody(param, true, new BindingContext(), exchange);
Object value = result.block(Duration.ofSeconds(5));
assertThat(value).isNotNull();
assertThat(param.getParameterType().isAssignableFrom(value.getClass()))
.as("Unexpected return value type: " + value).isTrue();
assertThat(value).isInstanceOf(param.getParameterType());
//no inspection unchecked
return (T) value;
@@ -248,8 +246,7 @@ class RequestBodyMethodArgumentResolverTests {
Object value = result.block(Duration.ofSeconds(5));
if (value != null) {
assertThat(param.getParameterType().isAssignableFrom(value.getClass()))
.as("Unexpected parameter type: " + value).isTrue();
assertThat(value).isInstanceOf(param.getParameterType());
}
//no inspection unchecked
@@ -299,8 +299,7 @@ class RequestPartMethodArgumentResolverTests {
Mono<Object> result = this.resolver.resolveArgument(param, new BindingContext(), exchange);
Object value = result.block(Duration.ofSeconds(5));
assertThat(value).isNotNull();
assertThat(param.getParameterType().isAssignableFrom(value.getClass())).isTrue();
assertThat(value).isInstanceOf(param.getParameterType());
return (T) value;
}
@@ -67,14 +67,12 @@ class WebSessionMethodArgumentResolverTests {
param = this.testMethod.arg(Mono.class, WebSession.class);
actual = this.resolver.resolveArgument(param, context, exchange).block();
assertThat(actual).isNotNull();
assertThat(Mono.class.isAssignableFrom(actual.getClass())).isTrue();
assertThat(actual).isInstanceOf(Mono.class);
assertThat(((Mono<?>) actual).block()).isSameAs(session);
param = this.testMethod.arg(Single.class, WebSession.class);
actual = this.resolver.resolveArgument(param, context, exchange).block();
assertThat(actual).isNotNull();
assertThat(Single.class.isAssignableFrom(actual.getClass())).isTrue();
assertThat(actual).isInstanceOf(Single.class);
assertThat(((Single<?>) actual).blockingGet()).isSameAs(session);
}