galera alguem poderia me falar em palavras faceis oque faz esse comando e como ele funciona(sintaxe) e se puder me dar um exemplo tambem, fikaria grato…
É utilizado pra saber se um tipo é do tipo de uma classe.
Vc utiliza ele assim:
variaval instanceof classe
É muito utilizado qdo sobrescreve o método equals:
class X {
public int a;
public boolean equals(Object o) {
if (!(o instanceof X)) {
return false;
}
return ((X)o).a == a;
}
}
[]'s
carisio
Da mesma forma que <, <=, >=, >, == e !=, instanceof é um “operador” de comparação. Ele retorna um boolean indicando se um objeto é instância de uma determinada classe.
Veja exemplo:
public class Main {
public static void main(String[] args) {
String s = "PortalJava";
Foo x = new Foo();
Zoo z = new Zoo();
System.out.println(s instanceof String);
System.out.println(x instanceof Foo);
System.out.println(z instanceof Foo);
System.out.println(x instanceof Zoo);
}
}
class Foo {}
class Zoo extends Foo {}
O instanceof, da mesma forma que os operadores de comparação, só pode ser usado com objetos e classes da mesma família, caso contrário ocorrerá um erro de compilação.
No exemplo apresentado, ocorreria um erro de compilação se fosse usado a linha comando:
System.out.println(s instanceof Foo);
Só pra complementar o operador instanceof é usado na comparação de variaveis de referencia de objeto…para ser mais simples verifica se um objeto é de um tipo especifico.
Observe o Exemplo..
public static void main(String args[){
String m = new String("Marcos");
if(m instanceof String){
System.out.println("A variavel m é do tipo String");
}
}
Cara isso pode ser aplicado tambem em interfaces e subclasses, verificando se o objeto implementa uma determinada interface ou se extende uma superclasse.
Espero ter ajudado…
Ate mais!!!
Código:
Uma duvida? Daria erro de compilação ou apenas retornaria false?
Erro. s (String) está numa árvore hierárquica diferente de Foo.
Ambos extendem Object.