在公共组件开发过程中,泛型使用常常是框架灵活性的一个重要手段。
总结了一下,我在开发过程中泛型使用和设计主要是这几个方面
- 对象容器,提供对象的存放和获取
- 创建对象,提供对象的创建能力
对象容器
常见的比如我们的HashMap,看如下代码
@Test
public void mapTest() {
HashMap<String, String> map = new HashMap<>();
map.put("a", "b");
String res = map.get("a");
log.info("res:{}", res);
}
对象生产
泛型方法,用于生成新对象
@Test
public void createTest() {
JSON.parseObject("", Person.class);
}
泛型T主要用于约束,可以用于类型转换(比如 T t =(T)o;);但T不能直接生成对象,可以通过父子类
获得一个类的泛型
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class MyClass<T> {
public static void main(String[] args) {
MyClass<String> myClass = new MyClass<>();
Type type = myClass.getClass().getGenericSuperclass();
if (type instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) type;
Type[] typeArguments = parameterizedType.getActualTypeArguments();
if (typeArguments.length > 0) {
Class<?> typeArgument = (Class<?>) typeArguments[0];
System.out.println(typeArgument.getSimpleName()); // 输出:String
}
}
}
}