假设我有一个A类,B,C,D是从A派生的.
如果我想知道引用的对象的类型是什么,我可以声明:
// pseudo-code
if(obj instanceof B)
< is B>
else if(obj instanceof C)
< is C>
else
<is D>
Run Code Online (Sandbox Code Playgroud)
这是因为我确信从A派生的类只有B,C和D.
但是,如果我只想检查两个引用是否指向同一种对象呢?
所以类似于:
if(obj1 instanceof obj2)
<do something>
Run Code Online (Sandbox Code Playgroud)
但当然语法是错误的.如果没有一千个if-else怎么检查呢?
Jac*_*ack 47
你的意思是
obj1.getClass().equals(obj2.getClass())
Run Code Online (Sandbox Code Playgroud)
如果两者都属于同一特定类obj1
,obj2
则返回true .
但如果你要A
与之比较,这将无效B extends A
.如果你想要等于返回true,即使一个是另一个的子类型,你将不得不写一个更强大的比较函数.我认为你可以通过循环getSuperClass()
来升级层次结构树.
我认为一个简单的解决方案也可以做A.getClass().isAssignableFrom(B.getClass())
,假设B extends A
.
归档时间: |
|
查看次数: |
24985 次 |
最近记录: |