概念

GenericTypeResolver是spring提供的泛型解析工具类,用于解析当前类所使用的泛型Class,用于适配某些特定场景需求以及设计模式中。

例如:
1、定义接口

public interface  MyInterface<T> {
    void testMethod(T event);
}

2、定义实现类

public class MyImpl  implements MyInterface<String>{

    @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<T> {
        default Class<T> provideClass() {
            return (Class<T>) GenericTypeResolver.resolveTypeArgument(getClass(), Provider.class);
        }
    }

    interface I0<T> extends Provider<T> {
    }

    interface I1<T> extends I0<T> {
    }

    interface I2<T> extends I1<T> {
    }

    class C0<T> implements Provider<T> {

    }

    class C1<T> extends C0<T> {

    }

    class C2<T> extends C1<T> {

    }

    class Entity {

    }

    public static void main(String[] args) {
        IClassProviderTest test = new IClassProviderTest();
        test.provideClass();
    }

    void provideClass() {
        {
            class C implements I0<Entity> {
            }
            System.out.println(new C().provideClass());
        }
        {
            class C implements I1<Entity> {
            }
            System.out.println(new C().provideClass());
        }
        {
            class C implements I2<Entity> {
            }
            System.out.println(new C().provideClass());
        }
        {
            class C extends C0<Entity> {
            }
            System.out.println(new C().provideClass());
        }
        {
            class C extends C1<Entity> {
            }
            System.out.println(new C().provideClass());
        }
        {
            class C extends C2<Entity> {
            }
            System.out.println(new C().provideClass());
        }
    }
}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐