Operador d ecompração instanceof

2 respostas
M

Boa noite,

Alguém sabe me explicar o motivo porque não posso fazer a compração abaixo?

String str = ?string?;
str instanceof String;

Retorna true.

2 Respostas

jcmird

Olá Amigo!
Operador instanceof, sempre irá de baixo para cima na arvore de herança. O fato de ele não ir no sentido contrario é questao de logica por exemplo o codigo abaixo:

public class Animal{}
public class Dog extends Animal{}

public class TestInstanceof {
public static void main(String []args){

Animal animal = new Animal ();
Dog dog = new Dog ();

if (dog instance of Animal){} // retornará true, porque Dog é um animal

if (animal instance of Dog){}// retornará false, porque nem todo animal é um cachorro.

O segundo if retorna false porque nem todo animal é um cachorro. Animal pode ser gato, elefante, etc. A mesma ferrari é um carro, mas nem todo carro é uma ferrari.

Espero ter ajudado,
Abraços

jcmird

Perdao amigo,
interpretei a sua pergunta mal.
seu codigo nao compila
porque vc colocou

String str = ?string?;
ao inves String str = “string”;

Criado 8 de julho de 2008
Ultima resposta 8 de jul. de 2008
Respostas 2
Participantes 2