JAVA泛型使用常用场景

在公共组件开发过程中,泛型使用常常是框架灵活性的一个重要手段。

总结了一下,我在开发过程中泛型使用和设计主要是这几个方面

  • 对象容器,提供对象的存放和获取
  • 创建对象,提供对象的创建能力

对象容器

常见的比如我们的HashMap,看如下代码

    @Test
    public void mapTest() {
        HashMap 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 {
    public static void main(String[] args) {
        MyClass 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
            }
        }
    }
}

你可能感兴趣的:(JAVA,java)