Java Field getGenericType()方法及实例
java.lang.reflect.Field 的 getGenericType() 方法用来返回一个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.Class
Type 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.Class
Type name: java.lang.String
参考文献 : https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Field.html#getGenericType-