ClassJava 类(扩展Object)和class关键字(用于创建类的单词)之间有什么区别?
在编程中,反射是程序通过分析运行时细节(例如对象实例的实际实现类)在运行时修改自身结构和行为的能力。该类Class是用于反射目的的 Java API 的一部分。鉴于class关键字是 Java 语言的结构,标记新类的定义,Class类则用于将变量和参数键入为类本身。这是程序使用类定义本身作为对象进行编程的一种方式(例如,您可以以编程方式枚举类的公共方法)。
此外,任何o类型的实例Object(即 Java 中的任何对象)都会继承getClass实例方法。这会产生对象的实际运行时类,而不管存储该对象的变量的编译时代码声明的类如何。例如,对于某些已定义的类X:
Object o = new X();
Class<?> type = o.getClass();
Run Code Online (Sandbox Code Playgroud)
type现在将是对类本身的引用X,它与Class<?>通用描述相匹配,因为该类X实际上是 type 的实例Class<X>。
每个定义的类还有一个称为class引用类本身的静态变量。调用getClass类 X 的实例将返回Class<X>与该类的class静态变量相同的实例:
("some string").getClass() == String.class
Run Code Online (Sandbox Code Playgroud)
值得注意的是,class即使原始类型不是对象,它们也都具有静态变量。还值得注意的是,原始类型与其包装类class的不同:class
int.class != Integer.class
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4872 次 |
| 最近记录: |