2011-03-03 124 views
2

我遇到过以下形式的代码:Java中的MyClass.class代表什么?

MyClass.class.getName(); 

.class属性是什么?

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

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

.class有哪些像getName()这样的函数?

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

提前致谢。

回答

4

MyClass.classClass类型的文字值(与"..."String类型的文字值相同)。

这适用于所有的类和接口,同时还为基本类型(int.class)。

由于Class是通用的MyClass.class类型为Class<MyClass>,这样就可以做到这一点:

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

方法可以its javadoc找到。

+0

我以前也听说过这个术语'字面值'。仍然有一些问题了解它。您能否请进一步解释,或者向我提供相关信息? – 2011-03-04 08:57:17

+1

@Shailesh:文字值是源代码中某种类型值的文本表示。所以''Hello,world“'是类型为'String'的文字值,'42'是类型为'int'的文字值,'true'是'boolean'类型的文字值。 – axtavt 2011-03-04 09:12:54

2

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

2

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