Java中的MyClass.class代表什么?

4

我遇到了这样的代码:

MyClass.class.getName();

.class是一个属性吗?

它适用于所有类吗?(它是否从Object类继承?)

.class返回什么类型的对象?

除了getName()之外,.class还有哪些函数?

我意识到这是一个非常基本的问题,但我无法在Javadocs中找到全面的信息,如果能给出一些.class的实际应用将会非常有帮助。

提前致谢。

3个回答

6

MyClass.class是一个类型为Class的字面值(就像"..."是一个类型为String的字面值)。

它适用于所有类和接口,也适用于基本类型(int.class)。

由于Class是泛型的,因此MyClass.class的类型是Class<MyClass>,所以您可以这样做:

Class<MyClass> c = MyClass.class;
MyClass o = c.newInstance(); // No cast needed, since newInstance() on Class<T> returns T

它的javadoc中可以找到Class类的方法。


1
我之前也听过“字面值”这个术语,但仍然有些难以理解。您能否进一步解释一下,或者指向相关信息? - Shailesh Tainwala
2
@Shailesh:字面值是源代码中某种类型的值的文本表示。因此,"Hello, world"String 类型的字面值,42int 类型的字面值,trueboolean 类型的字面值,等等。 - axtavt

2

.class返回一个 Class 类的对象,适用于所有类。它是Java核心类。


2
不,它不是一个属性。 "class" 是一个特殊的关键字,可以用来通过类名获取该类的 Class 对象。你可以调用 java.lang.Object.class,但不能调用 obj.class。相反,你应该使用 obj.getClass()

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