Определите, относятся ли два объекта Java к одному классу - PullRequest
51 голосов
/ 26 июля 2011

Я пытаюсь сделать эквивалент

if ( object1.class == object2.class )
{
    //do something
}  

что, конечно, не работает, какой метод я пропускаю?

Ответы [ 6 ]

73 голосов
/ 26 июля 2011

Если они из точного того же класса:

boolean result = object1.getClass().equals( object2.getClass());

Теперь, если они являются совместимыми классами (если один принадлежит к другому классу):

HashMap<String,Object> hashMap = new HashMap<String,Object>();
LinkedHashMap<String,Object> linkedHashMap = new LinkedHashMap<String,Object>();
boolean result = hashMap.getClass().isAssignableFrom( linkedHashMap.getClass() );

Поскольку LinkedHashMap является подклассом HashMap, эта переменная result будет иметь значение true, так что это может быть лучше для вас, так как она собирается найти точные совпадения и совпадения подкласса.

Кроме того, вам следует избегать использования «.class» для переменных, поскольку это может не дать вам правильный результат, например:

Object someText = "text value";
System.out.println( someText.class.getName() ); //this will print java.lang.Object and not java.lang.String

Когда вы используете ".class", вы обращаетесь к статическому свойству переменной, а не к классу самого объекта.

14 голосов
/ 26 июля 2011

Вам не хватает метода getClass(),

if (object1.getClass().equals(object2.getClass())) 
{ 
    // do something 
}
6 голосов
/ 26 июля 2011

Вы можете использовать это:

if (object1.getClass().equals(object2.getClass())) {
    //do something
}
4 голосов
/ 26 июля 2011

Вы ищете метод getClass, определенный в java.lang.Class.

(Источник: http://download.oracle.com/javase/7/docs/api/java/lang/Class.html)

4 голосов
/ 26 июля 2011

Вы должны использовать метод getClass().

попробовать:

if(object1.getClass() == object2.getClass())
   //do something
4 голосов
/ 26 июля 2011
object1.getClass() == object2.getClass()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...