penso che il funzionario documentation ti dà la risposta a questa domanda (anche se in modo piuttosto aspecifico):
Questo metodo è l'equivalente dinamica del linguaggio Java instanceof operatore.
Prendo questo per indicare che isInstance()
è destinato principalmente all'utilizzo nel codice che si occupa della riflessione del tipo in fase di esecuzione. In particolare, direi che esiste per gestire casi in cui potresti non sapere in anticipo il/i tipo/i di classe/e che vuoi controllare in anticipo per l'appartenenza (raramente anche se questi casi lo sono).
Per esempio, è possibile utilizzarlo per scrivere un metodo che consente di verificare se due oggetti arbitrariamente sono stampati assegnazione-compatibili, come:
public boolean areObjectsAssignable(Object left, Object right) {
return left.getClass().isInstance(right);
}
In generale, direi che l'utilizzo instanceof
dovrebbe essere preferito ogni volta che conosci il tipo di lezione che vuoi controllare in anticipo. In quei casi molto rari in cui non lo fai, usa invece isInstance()
.
Se si intende chiudere una domanda come duplicato, almeno citare le domande precedenti. – user949300