See if two object have the same type

自作多情 提交于 2019-12-03 00:05:59

You mean something like

obj1.getClass().equals(obj2.getClass())

This should return true just if both obj1 and obj2 are of the same specific class.

But this won't work if you are comparing A with B extends A. If you want equality that returns true even if one is a subtype of another you will have to write a more powerful comparison function. I think that you can do it by looping with getSuperClass() to go up the hierarchy tree.

I think a simple solution can be also to do A.getClass().isAssignableFrom(B.getClass()), assuming that B extends A.

You could do

if (obj1.getClass() == obj2.getClass()) { ... }

Something like this:

if(classA.getClass().getName().equals(classB.getClass().getName()))
     <do something>

Since B, C and D are subclasses of A, and you want to do something with these classes, I wouldn't use the instanceOf operator. This one's only useful for when there's no other way.

You could better override the super methods and/or variables, so you can use all the objects the same, tough they will do something different (for example printing it's own type).

instanceof needs to point towards a class, not another object. To check that two objects both come from the same type of object do something to the following ..

if((obj1 instanceof ClassName) && (obj2 instanceof ClassName)) {
  do whatever
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!