小编Ash*_*ley的帖子

检测未初始化对象的类型

假设我有一个未初始化的对象,例如:

MyClass A=null;
Run Code Online (Sandbox Code Playgroud)

如何检测A的类型是MyClass?A instanceof MyClass.class不管用.这是假的.然后A.getClass()抛出一个NullPointerException.有没有办法找到这种未初始化对象的类型?

编辑:

实际情况是MyClassA,MyClassB并且MyClassC是子类MyClass.所以我将使用以下代码:

MyClassB B=null;
MyClass MC=B;
Run Code Online (Sandbox Code Playgroud)

现在,在运行时,我需要确定MC是"实例" MyClassA还是MyClassBMyClassC.有没有办法做到这一点?

编辑2:

通过在运行时检测类型,我将能够执行以下操作:

MyClass C=null;
...
//detect the type of C and instantiate the base class with an instance of that type
MyClass MC=new MyClassC();
Run Code Online (Sandbox Code Playgroud)

基本上,我将传递所有子类的对象,我将必须确定每个对象的类型,并使用该类型实例化基类并返回它.

编辑3:

终于找到了部分方法来做到这一点!依靠多态来做到这一点:

MyClassC C=null;
detect(C);
....
detect(MyClassA a){}
detect(MyClassB b){}
detect(MyClassC c){ //MyClassC detected! }
Run Code Online (Sandbox Code Playgroud)

但是,如果我传递了MyClass对象,这将无效.

java types class detect

3
推荐指数
1
解决办法
246
查看次数

标签 统计

class ×1

detect ×1

java ×1

types ×1