Я пытаюсь сделать эквивалент
if ( object1.class == object2.class )
{
//do something
}
который, конечно, не работает, какой метод я пропускаю?
Я пытаюсь сделать эквивалент
if ( object1.class == object2.class )
{
//do something
}
который, конечно, не работает, какой метод я пропускаю?
Если они из точного того же класса:
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 будет верна, поэтому, возможно, это будет лучше для вас, так как она найдет точные и подклассовые совпадения.
Кроме того, вам следует избегать использования ".class" для переменных, поскольку это может не дать вам правильный результат, например:
Object someText = "text value";
System.out.println( someText.class.getName() ); //this will print java.lang.Object and not java.lang.String
Когда вы используете ".class", вы получаете переменное статическое свойство, а не класс самого объекта.
Вам не хватает метода getClass()
,
if (object1.getClass().equals(object2.getClass()))
{
// do something
}
Вы можете использовать это:
if (object1.getClass().equals(object2.getClass())) {
//do something
}
object1.getClass() == object2.getClass()
вам нужно использовать метод getClass()
.
попробовать:
if(object1.getClass() == object2.getClass())
//do something
Вы ищете метод getClass
, определенный в java.lang.Class
.
(Источник: http://download.oracle.com/javase/7/docs/api/java/lang/Class.html)