GenericTypeResolver是spring提供的泛型解析工具类,用于解析当前类所使用的泛型Class,用于适配某些特定场景需求以及设计模式中。
例如:
1、定义接口
public interface MyInterface{ void testMethod(T event); }
2、定义实现类
public class MyImpl implements MyInterface{ @Override public void testMethod(String event) { } }
3、测试
public static void main(String[] args) {
MyImpl dffImpl = new MyImpl();
Class> aClass = GenericTypeResolver.resolveTypeArgument(dffImpl.getClass(), MyInterface.class);
System.out.println(aClass);
}
结果:
class java.lang.String解决多级继承,多接口实现的问题,支持获取多个泛型参数类型
例如:
class IClassProviderTest {
interface Provider {
default Class provideClass() {
return (Class) GenericTypeResolver.resolveTypeArgument(getClass(), Provider.class);
}
}
interface I0 extends Provider {
}
interface I1 extends I0 {
}
interface I2 extends I1 {
}
class C0 implements Provider {
}
class C1 extends C0 {
}
class C2 extends C1 {
}
class Entity {
}
public static void main(String[] args) {
IClassProviderTest test = new IClassProviderTest();
test.provideClass();
}
void provideClass() {
{
class C implements I0 {
}
System.out.println(new C().provideClass());
}
{
class C implements I1 {
}
System.out.println(new C().provideClass());
}
{
class C implements I2 {
}
System.out.println(new C().provideClass());
}
{
class C extends C0 {
}
System.out.println(new C().provideClass());
}
{
class C extends C1 {
}
System.out.println(new C().provideClass());
}
{
class C extends C2 {
}
System.out.println(new C().provideClass());
}
}
}
暑期编程PK赛
得CSDN机械键盘等精美礼品!


