Spring 优雅的获取泛型

ResolvableType 工具

从 Spring 4.0 开始 Spring 中添加了 ResolvableType 工具,这个类可以更加方便的用来回去泛型信息。
首先我们来看看官方示例:

1
2
3
4
5
6
7
8
9
10
11
private HashMap<Integer, List<String>> myMap;

public void example() {
ResolvableType t = ResolvableType.forField(getClass().getDeclaredField("myMap"));
t.getSuperType(); // AbstractMap<Integer, List<String>>
t.asMap(); // Map<Integer, List<String>>
t.getGeneric(0).resolve(); // Integer
t.getGeneric(1).resolve(); // List
t.getGeneric(1); // List<String>
t.resolveGeneric(1, 0); // String
}

详细说明

构造获取 Field 的泛型信息

1
ResolvableType.forField(Field)

构造获取 Method 的泛型信息

1
ResolvableType.forMethodParameter(Method, int)

构造获取方法返回参数的泛型信息

1
ResolvableType.forMethodReturnType(Method)

构造获取构造参数的泛型信息

1
ResolvableType.forConstructorParameter(Constructor, int)

构造获取类的泛型信息

1
ResolvableType.forClass(Class)

构造获取类型的泛型信息

1
ResolvableType.forType(Type)

构造获取实例的泛型信息

1
ResolvableType.forInstance(Object)

更多使用 Api 请查看,ResolvableType java doc: https://docs.spring.io/spring…

坚持技术分享,您的支持将鼓励我继续创作!