java 泛型 应用 type

来源:互联网 发布:unity3d是游戏特效么 编辑:程序博客网 时间:2024/05/16 14:45

java中class,method,field的继承体系

java中所有对象的类型定义类Type

说明:

Type : Type is the common superinterface for all types in the Java programming language. These include raw types, parameterized types, array types, type variables and primitive types.

使用

一般我们不直接操作Type类型,所以第一次使用会对这个比较陌生,相对内部的一些概念。

根据Type类型分类,整理了一个type -> class的转换过程,同理也包括处理Generic Type。支持多级泛型处理。

Java代码

  1. private static Class getClass(Type type, int i) {     
  2.         if (type instanceof ParameterizedType) { // 处理泛型类型     
  3.             return getGenericClass((ParameterizedType) type, i);     
  4.         } else if (type instanceof TypeVariable) {     
  5.             return (Class) getClass(((TypeVariable) type).getBounds()[0], 0); // 处理泛型擦拭对象     
  6.         } else {// class本身也是type,强制转型     
  7.             return (Class) type;     
  8.         }     
  9.     }     
  10.     
  11.     private static Class getGenericClass(ParameterizedType parameterizedType, int i) {     
  12.         Object genericClass = parameterizedType.getActualTypeArguments()[i];     
  13.         if (genericClass instanceof ParameterizedType) { // 处理多级泛型     
  14.             return (Class) ((ParameterizedType) genericClass).getRawType();     
  15.         } else if (genericClass instanceof GenericArrayType) { // 处理数组泛型     
  16.             return (Class) ((GenericArrayType) genericClass).getGenericComponentType();     
  17.         } else if (genericClass instanceof TypeVariable) { // 处理泛型擦拭对象     
  18.             return (Class) getClass(((TypeVariable) genericClass).getBounds()[0], 0);     
  19.         } else {     
  20.             return (Class) genericClass;     
  21.         }     
  22.     }    
0 0