- instanceof运算符
只被用于检查左边的被测试对象是不是右边类或接口的实例化。
如果被测对象是null值,则测试结果总是false。
形象地:自身实例或子类实例 instanceof 自身类 返回true
- Class类的isInstance(Object obj)方法
obj是被测试的对象,若obj是调用isInstance方法的类或接口 的Class类的实例,则返回true。
这个方法是instanceof运算符的动态等价。 效率高于instanceof
形象地:自身类.class.isInstance(自身实例或子类实例) 返回true
- Class类的isAssignableFrom(Class cls)方法,
若调用isAssignableFrom方法的类或接口与参数cls表示的类或接口相同则返回true;
若调用isAssignableFrom方法的类或接口与参数cls表示的类或接口的父类,则返回true。
形象地:自身类.class.isAssignableFrom(自身类或子类.class) 返回true
- getGenericIntes方法
得到直接接口的泛型类型
- getSuperclass方法
得到表示此 Class
所表示的实体(类、接口、基本类型或 void)的超类的 Class
。
如果此 Class
表示 Object
类、一个接口、一个基本类型或 void,则返回 null。
如果此对象表示一个数组类,则返回表示该 Object
类的 Class
对象。
- getGenericSuperclass方法
得到直接超类的泛型类型
getGenericSuperclass参考文档翻译如下:
返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type。
如果超类是参数化类型,则返回的 Type 对象必须准确反映源代码中所使用的实际类型参数。如果以前未曾创建表示超类的参数化类型,则创建这个类型。有关参数化类型创建过程的语义,请参阅 ParameterizedType
声明。
如果此 Class 表示 Object 类、接口、基本类型或 void,则返回 null。
如果此对象表示一个数组类,则返回表示 Object 类的 Class 对象。
返回:
此对象所表示的类的超类
抛出:
GenericSignatureFormatError
- 如果常规类签名不符合 Java Virtual Machine Specification, 3rd edition 规定的格式
TypeNotPresentException
- 如果常规超类引用不存在的类型声明
MalformedParameterizedTypeException
- 如果常规超类引用的参数化类型由于某种原因无法实例化