Java Field getGenericType()方法及实例

来源:这里教程网 时间:2026-02-17 20:50:42 作者:

Java Field getGenericType()方法及实例

java.lang.reflect.FieldgetGenericType() 方法用来返回一个Type对象,代表这个Field对象的声明类型。返回的类型对象可以是Type的子接口的实现之一。GenericArrayType, ParameterizedType, WildcardType, TypeVariable, Class.如果字段对象的类型是参数化类型,返回的Type对象必须准确地反映源代码中使用的实际类型参数,如果底层字段的类型是类型变量或参数化类型,它将被创建。否则,它将被解析。

语法

public Type getGenericType()

参数: 此方法不接受任何东西。
返回 :此方法返回一个 Type 对象,代表此Field对象所代表的字段的声明类型。
异常 :此方法返回以下异常。

GenericSignatureFormatError: 如果通用字段签名不符合The Java™ Virtual Machine Specification中指定的格式。TypeNotPresentException: 如果底层字段的通用类型签名指向一个不存在的类型声明。MalformedParameterizedTypeException: 如果底层字段的通用签名指向一个因任何原因不能实例化的参数化类型。

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

程序1 :

// 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.ClassType name: int

程序2

// 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.ClassType name: java.lang.String

参考文献 : https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html#getGenericType-

相关推荐