Spring 里有用工具类:

GenericTypeResolver 解析泛型类型。核心逻辑还是调用 ResolvableType
ResolvableType 解析泛型类型参数

 1 interface Service2<N, M> {}
 2 
 3 class ABService2 implements Service2<A, B> {}
 4 class A {}
 5 class B{}
 6 
 7 
 8 public class TestGenericClass2 {
 9 
10     public static void main(String[] args) {
11         /** JDK 原生的方法获取泛型参数 **/
12         //获取ABService2实现的第一个接口,即Service2<A, B>
13         ParameterizedType parameterizedType = (ParameterizedType) ABService2.class.getGenericInterfaces()[0];
14         System.out.println(parameterizedType);
15         //从Service2<A, B> 获得第1个泛型参数,即A
16         Type genericType = parameterizedType.getActualTypeArguments()[0];
17         System.out.println(genericType);
18         System.out.println("*************");
19         
20         /** 通过 Spring API 获取泛型参数 **/
21         ResolvableType resolvableType = ResolvableType.forClass(ABService2.class);
22         // 以下两种方式都可以获取到泛型参数 A
23         // 指定类来获取
24         Class c=resolvableType.as(Service2.class).getGeneric(0).resolve();
25         Class d=resolvableType.getInterfaces()[0].getGeneric(0).resolve();
26         System.out.println("c   "+c);
27         System.out.println("d   "+d);
28         System.out.println("__________");
29 
30         //下面的可以获得被aop代理之前的类型
31 //        ClassUtils.getUserClass(myClass);
32     }
33 }
View Code

相关文章:

  • 2022-01-03
  • 2021-12-04
  • 2021-05-19
  • 2021-07-07
  • 2022-12-23
  • 2022-02-09
  • 2021-08-14
  • 2021-10-24
猜你喜欢
  • 2021-11-13
  • 2021-05-11
  • 2022-12-23
  • 2021-07-13
  • 2021-12-22
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案