java中的getType()和getClass()有什么区别?

2022-09-04 19:36:22

我曾经在c#中使用,我看到它也存在于Java中。getType()

我应该何时使用?getType()getClass()


答案 1

根据 getClassgetType 的文档

getClass返回“表示此对象的运行时类的 Class 对象”。

getType返回“一个 Class 对象,用于标识此对象所表示的字段的声明类型”

主要区别在于,它将给你一个运行时类型的类对象,并给你一个引用字段的声明类型的类对象。someObject.getClass()someObjectsomeField.getType()someField

(调用将返回,因为它引用的是对象本身,而不是它所引用的字段)。someField.getClass()Field.classField

此外,虽然可用于每个对象,但仅适用于作为反射 API 一部分的对象。getClassgetTypeField


答案 2

getClass类对象的一种方法,它将继承到所有类,并且在任何情况下都同样工作。
就像为不同目的在不同类上编写的其他方法一样。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.

正如文档所说
,对于将在Java上编写的所有类都是通用的。

getType()在不同情况下返回不同的东西

例如

字符方法中获取类型 Returns a value indicating a character's general category.

java.awt.Window 方法 getType 中返回 Enum Window.Type