|
|
|
|
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
|
|
|
|
/* |
|
|
|
|
* Copyright 2002-2023 the original author or authors. |
|
|
|
|
* Copyright 2002-2024 the original author or authors. |
|
|
|
|
* |
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
|
@ -169,7 +169,7 @@ class ResolvableTypeTests {
@@ -169,7 +169,7 @@ class ResolvableTypeTests {
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void forInstanceProviderNull() { |
|
|
|
|
ResolvableType type = ResolvableType.forInstance(new MyGenericInterfaceType<String>(null)); |
|
|
|
|
ResolvableType type = ResolvableType.forInstance(new MyGenericInterfaceType<>(null)); |
|
|
|
|
assertThat(type.getType()).isEqualTo(MyGenericInterfaceType.class); |
|
|
|
|
assertThat(type.resolve()).isEqualTo(MyGenericInterfaceType.class); |
|
|
|
|
} |
|
|
|
|
@ -1177,6 +1177,20 @@ class ResolvableTypeTests {
@@ -1177,6 +1177,20 @@ class ResolvableTypeTests {
|
|
|
|
|
assertThatResolvableType(complex4).isNotAssignableFrom(complex3); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void isAssignableFromForUnresolvedWildcards() { |
|
|
|
|
ResolvableType wildcard = ResolvableType.forInstance(new Wildcard<>()); |
|
|
|
|
ResolvableType wildcardFixed = ResolvableType.forInstance(new WildcardFixed()); |
|
|
|
|
ResolvableType wildcardConcrete = ResolvableType.forClassWithGenerics(Wildcard.class, Number.class); |
|
|
|
|
|
|
|
|
|
assertThat(wildcard.isAssignableFrom(wildcardFixed)).isTrue(); |
|
|
|
|
assertThat(wildcard.isAssignableFrom(wildcardConcrete)).isTrue(); |
|
|
|
|
assertThat(wildcardFixed.isAssignableFrom(wildcard)).isFalse(); |
|
|
|
|
assertThat(wildcardFixed.isAssignableFrom(wildcardConcrete)).isFalse(); |
|
|
|
|
assertThat(wildcardConcrete.isAssignableFrom(wildcard)).isTrue(); |
|
|
|
|
assertThat(wildcardConcrete.isAssignableFrom(wildcardFixed)).isFalse(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
void identifyTypeVariable() throws Exception { |
|
|
|
|
Method method = ClassArguments.class.getMethod("typedArgumentFirst", Class.class, Class.class, Class.class); |
|
|
|
|
@ -1574,7 +1588,6 @@ class ResolvableTypeTests {
@@ -1574,7 +1588,6 @@ class ResolvableTypeTests {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class MySimpleInterfaceType implements MyInterfaceType<String> { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -1584,7 +1597,6 @@ class ResolvableTypeTests {
@@ -1584,7 +1597,6 @@ class ResolvableTypeTests {
|
|
|
|
|
public abstract class ExtendsMySimpleInterfaceTypeWithImplementsRaw extends MySimpleInterfaceTypeWithImplementsRaw { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class MyCollectionInterfaceType implements MyInterfaceType<Collection<String>> { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -1592,20 +1604,17 @@ class ResolvableTypeTests {
@@ -1592,20 +1604,17 @@ class ResolvableTypeTests {
|
|
|
|
|
public abstract class MySuperclassType<T> { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class MySimpleSuperclassType extends MySuperclassType<String> { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class MyCollectionSuperclassType extends MySuperclassType<Collection<String>> { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
interface Wildcard<T extends Number> extends List<T> { |
|
|
|
|
public class Wildcard<T extends Number> { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
interface RawExtendsWildcard extends Wildcard { |
|
|
|
|
public class WildcardFixed extends Wildcard<Integer> { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|