Если они из точного того же класса:
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", вы обращаетесь к статическому свойству переменной, а не к классу самого объекта.