在Java中,getType()和getClass()之间有什么区别?

14
我以前在C#中使用过getType(),我也在Java中看到它存在。
什么时候应该使用getType(),什么时候应该使用getClass()

1
展示Java中getType()方法的Javadocs。 - Jeroen Vannevel
2
getType()是什么?您在文档中看到过这样的方法吗:https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html - JB Nizet
http://www.tutorialspoint.com/java/io/objectstreamfield_gettype.htm - Elad Benda
2个回答

22
根据getClassgetType的文档: getClass返回“表示此对象的运行时类的Class对象。” getType返回“标识此对象所代表字段的声明类型的Class对象”
主要区别在于,someObject.getClass()会给你一个someObject运行时类型的类对象,而someField.getType()将给你一个someField所引用的字段的声明类型的类对象。
(调用someField.getClass()将返回Field.class,因为它是指向Field对象本身,而不是它所引用的字段)。
此外,getClass对于每个对象都可用,而getType仅在反射API的一部分Field对象上可用。

Field.classField.getClass() 有什么区别? - Elad Benda2
1
Field.classField 类。Field.getClass() 不可能,因为你只能在实例上调用 getClass - DanielGibbs
someField.classsomeField.getClass() 有什么区别? - Elad Benda2

1

getClassClass 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()在不同的情况下返回不同的结果

比如在Character中的getType方法,返回表示字符一般类别的值。

而在java.awt.Window中的getType方法会返回枚举类型 Window.Type


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接