我试图理解Object.getClass()
方法所做的事情。
文档称它“返回对象的运行时类”。这个解释并没有帮助我理解这个术语。
有没有人能够简单地描述一下“运行时类”是什么,以及getClass()
方法是做什么的?
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.
你编写的每个类都有很多元数据。这些元数据包括类名、字段、方法、基类、实现的接口等。
有时你可能需要在运行时从代码中访问这些元数据。
为了做到这一点,你可以取任何对象并调用它的 getClass()
方法。你将收到一个包含上述元数据的 Class
对象。
一个对象的类在运行时可以改变。考虑以下示例:
package demo;
public class Main {
public static class A {
public int a=0;
}
public static class B extends A {
public int b=1;
}
public static void main(String[] args) {
Main.A b=new Main.A();
System.out.println(b.getClass().toString());
b=new Main.B();
System.out.println(b.getClass().toString());
}
}
运行时 b.getClass() 的输出结果发生了变化。
Object o = new String()
=> 你将得到字符串,而不是对象。 - Fildor