在公共组件开发过程中,泛型使用常常是框架灵活性的一个重要手段。
总结了一下,我在开发过程中泛型使用和设计主要是这几个方面
- 对象容器,提供对象的存放和获取
- 创建对象,提供对象的创建能力
对象容器
常见的比如我们的HashMap,看如下代码
@Testpublic void mapTest() {HashMap<String, String> map = new HashMap<>();map.put("a", "b");String res = map.get("a");log.info("res:{}", res);}
对象生产
泛型方法,用于生成新对象
@Testpublic 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}}}
}