Rozpoznawanie klasy obiektu

 

operator instanceof

Jeśli wiesz jakiego typu obiektu możesz się spodziewać, użyj serii instrukcji warunkowych if, aby rozpoznać klasę obiektu - np. tak:

if( obj instanceof NazwaKlasy01 )
    ...
else if( obj instanceof NazwaKlasy02 )
    ...

 

metoda isInstance( Object object )

Jeśli nie znasz klasy obiektu, a chcesz sprawdzić, czy obiekt danej klasy może zostać przypisany do obiektu innej klasy, użyj następującego kodu:

public boolean areObjectsAssignable( Object left, Object right ) {
    return left.getClass().isInstance( right );
} 

 

Przykład:

class Ancestor {

}

class Child extends Ancestor {

}

public class ObjectTypeConvertionAndRecognitionProgram {
    public static void main( String[] args ) {
        Object a = new Ancestor();
        Ancestor b = new Child();

        System.out.println( a.getClass().getName() );	// Ancestor
        System.out.println( b.getClass().getName() );	// Child
        
        System.out.println( a instanceof Ancestor ? "YES" : "NO" );            // YES   
        System.out.println( b instanceof Ancestor ? "YES" : "NO" );            // YES
        System.out.println( a instanceof Child ? "YES" : "NO" );               // NO
        System.out.println( a.getClass().isInstance( b ) ? "YES" : "NO" );     // YES
        System.out.println( b.getClass().isInstance( a ) ? "YES" : "NO" );     // NO

    }
}