我以前在C#中使用过
什么时候应该使用
getType()
,我也在Java中看到它存在。什么时候应该使用
getType()
,什么时候应该使用getClass()
?getClass
返回“表示此对象的运行时类的Class对象。”
getType
返回“标识此对象所代表字段的声明类型的Class对象”someObject.getClass()
会给你一个someObject
的运行时类型的类对象,而someField.getType()
将给你一个someField
所引用的字段的声明类型的类对象。someField.getClass()
将返回Field.class
,因为它是指向Field
对象本身,而不是它所引用的字段)。getClass
对于每个对象都可用,而getType
仅在反射API的一部分Field
对象上可用。Field.class
和 Field.getClass()
有什么区别? - Elad Benda2Field.class
是 Field
类。Field.getClass()
不可能,因为你只能在实例上调用 getClass
。 - DanielGibbssomeField.class
和 someField.getClass()
有什么区别? - Elad Benda2getClass
是Class Object的一个方法,它将被所有类继承,并在任何情况下都能正常工作。
getType
就像其他一些为不同目的编写在不同类上的方法一样。
getClass()
Returns the runtime class of this Object. The returned Class object is the object that is locked by
static synchronized methods of the represented class.
如文档所述
getType()在不同的情况下返回不同的结果
getType()
方法的Javadocs。 - Jeroen Vannevel