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
}
}