📜  Java中的字段 getGenericType() 方法及示例

📅  最后修改于: 2022-05-13 01:54:47.143000             🧑  作者: Mango

Java中的字段 getGenericType() 方法及示例

Java.lang.reflect.FieldgetGenericType()方法用于返回一个Type 对象,表示该Field 对象的声明类型。返回的类型对象可以是 Type 子接口的实现之一:GenericArrayType、ParameterizedType、WildcardType、TypeVariable、Class。如果 Field 对象的 Type 是参数化类型,则返回的 Type 对象必须准确反映源代码中使用的实际类型参数,如果基础字段的类型是类型变量或参数化类型,则创建它。否则,就解决了。

句法:

public Type getGenericType()

参数:此方法不接受任何内容。

Return :此方法返回一个Type对象,该对象表示此 Field 对象表示的字段的声明类型。

异常:此方法返回以下异常:

  • GenericSignatureFormatError:如果通用字段签名不符合Java™ 虚拟机规范中指定的格式。
  • TypeNotPresentException:如果基础字段的泛型类型签名引用了不存在的类型声明。
  • MalformedParameterizedTypeException:如果基础字段的通用签名引用了由于任何原因无法实例化的参数化类型。

下面的程序说明了 getGenericType() 方法:
方案一:

// Java program to illustrate
// getGenericType() method
  
import java.lang.reflect.Field;
import java.lang.reflect.Type;
  
public class GFG {
  
    // initialize field
    private static int number;
  
    public static void main(String[] args)
        throws NoSuchFieldException
    {
        // get Field object
        Field field
            = GFG.class
                  .getDeclaredField("number");
  
        // apply getGenericType() method
        Type type = field.getGenericType();
  
        // print Results
        System.out.println(
            "Type class: "
            + type.getClass());
        System.out.println(
            "Type name: "
            + type.getTypeName());
    }
}
输出:
Type class: class java.lang.Class
Type name: int

方案二:

// Java program to illustrate
// getGenericType() method
  
import java.lang.reflect.Field;
import java.lang.reflect.Type;
  
public class GFG {
  
    // initialize field
    final static String value = "Geeks";
  
    public static void main(String[] args)
        throws NoSuchFieldException
    {
  
        // get Field object
        Field field
            = GFG.class
                  .getDeclaredField("value");
  
        // apply getGenericType() method
        Type type = field.getGenericType();
  
        // print Results
        System.out.println(
            "Type class: "
            + type.getClass());
        System.out.println(
            "Type name: "
            + type.getTypeName());
    }
}
输出:
Type class: class java.lang.Class
Type name: java.lang.String

参考: https: Java