在了解Object中的常用方法之前,我们先来看看Object类的源码,如下所示:
/**
* Class {@code Object} is the root of the class hierarchy.
* Every class has {@code Object} as a superclass. All objects,
* including arrays, implement the methods of this class.
*
* @author unascribed
* @see java.lang.Class
* @since JDK1.0
*/
public class Object {
getClass()方法可以用于获取对象运行时的字节码类型,得到该对象的运行时的真实类型。该方法属于Java的反射机制,其返回值是Class类型,例如 Class c = obj.getClass();。通过对象c,我们可以进一步获取该对象的所有成员方法,每个成员方法都是一个Method对象。我们也可以获取该对象的所有成员变量,每个成员变量都是一个Field对象。同样的,我们也可以获取该对象的构造函数,构造函数则是一个Constructor对象。
4.2 案例
public class ObjectTest {
public static void main(String[] args) {
//判断运行时d对象和c对象是否是同一个类型
Animal d = new Dog();
Animal c = new Cat();
//方式1:通过instanceof关键字判断
if((d instanceof Dog && c instanceof Dog) ||(d instanceof Cat && c instanceof Cat)) {
System.out.println("是同一个类型");
}else {
System.out.println("不是同一个类型");
}