我试图了解该Object.getClass()方法的作用。
该文档说,它“返回对象的运行时类”。这种解释并不能帮助我理解该术语。
是否有人对“运行时类”是什么以及getClass()它是什么做了简单的描述?
只需将其理解为“具有对象类型的所有元数据的对象”。在该对象中,您可以找到在类中声明的方法、字段、类型层次结构等。这些信息通常由使用反射来检查对象/类型或运行方法的代码使用,而无需具有类在它们自己被编码时定义和编译。
可能会强调“运行时”,因为类定义可能会随着时间的推移而改变,或者对象可能被声明为超类型,而它实际上是所声明对象的子类型的实例。当加载某个类时,getClass() 方法将返回在该实例期间加载的信息。
简而言之,当您的代码运行时,VM 将以与您在 .java 文件中键入的“源”形式不同的方式定义您的类。当然,在编译之后,这些信息将被加载,并且所有元数据(如上所述)将构成他们所谓的“运行时类”。这只是一种奇特的说法“在程序运行时加载了一个类的所有元数据的对象”
它的意思是“变量在运行时引用的实例的类”(抱歉,实际上还不清楚)。
如果你有一个参考Object,它可能是指一个Object,一个String,一个Integer...你得到的类,而不是Object。
Object obj1 = new Object();
System.out.println(obj1.getClass()); // java.lang.Object
String obj2 = "";
System.out.println(obj2.getClass()); // java.lang.String
obj1 = obj2;
System.out.println(obj1.getClass()); // java.lang.String, not Object.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3791 次 |
| 最近记录: |