获取 java.lang.Object 对象的主要 class(Class 对象的 T?)

Getting the main class of a java.lang.Object object (T of a Class object?)

我想知道如何将 class 从 java.lang.Object 对象获取到特定的 class,例如 Cat class 我可以写;不是直接转换为 Cat,而是自动获取对象的主要 class 并转换为主要 class,因为我可能会接受 Object 参数以接受许多class 种。通过Class<T>获取对象,获取T(main class的类型)是否可能?

我的意思是:

class Cat {
    public String meowMessage = "meow";

    public void meow() {
        System.out.println(meowMessage);
    }
}

public class Main {
    public static void main(String[] args) {
        Object obj = new Cat();
        // Cat c = obj.getClass()...;
        // ^ how to get the Class object and automatically cast to the main class (Cat)?
    }
}

您想要的是在运行时确定通用参数。这是不可能的,因为 type erasure.

如果我没理解错的话,你需要instanceof所以你可以这样写:

if (obj instanceof Cat) {
  Cat cat = (Cat) obj;
  cat.meow();
} else {
  //do something else
}

无法转换为编译时未知的类型,我认为这没有任何意义,因为需要转换才能从代码中静态访问 class 实例的成员.但是如果 class 未知,如何知道什么是可访问的?