Class c1 = Car.class;
这是什么.class
?它是每个类中都存在的公共变量吗?
问问题
163 次
3 回答
5
语法与访问静态字段的.class
语法相同,但它实际上不是静态字段;这是一个特殊的语言功能。它类似于数组的length
属性,就像一个字段一样被访问,但实际上并没有作为一个字段存储。
要查看差异,请考虑以下示例类:
class Test {
public static Class<Test> myClass = Test.class;
}
运行javap Test
给
class Test {
public static java.lang.Class<Test> myClass;
Test();
static {};
}
如您所见,Test.myClass
由于我们自己声明它,它被存储为静态字段,但Test.class
由于它实际上并未存储为静态字段而没有显示。
于 2013-04-17T02:43:32.767 回答
4
这是获取相应Class
对象的特殊语法。class
是一个关键字,所以不,没有称为“类”的属性,它只是一个类似于属性访问的语法快捷方式。就像是
Class.forName("Car")
除了它不会抛出异常。
于 2013-04-17T02:42:38.730 回答
3
Java 中的每个对象都属于某个类。这就是为什么由所有其他类继承的 Object 类定义 getClass() 方法的原因。
getClass()
, 或 class-literal -Foo.class
返回一个 Class 对象,其中包含有关该类的一些元数据:
- 姓名
- 包裹
- 方法
- 字段
- 构造函数
- 注释
以及一些有用的方法,如强制转换和各种检查(isAbstract()、isPrimitive() 等)。javadoc准确地显示了您可以获得哪些关于类的信息。
它指向Class
一个类名的实例。如果你有同一个类的对象,你也可以使用
Class c1 = Class.forName("Car");
于 2013-04-17T02:46:28.230 回答