Entendendo o instanceof

5 respostas
andrepm

Pessoal olá,

Sou bem iniciante no java e estou com uma aplicação que preciso entender antes de começar a implementar novas partes à ela, se trata de um mero chat em RMI. Entretanto, estou com problemas no seguinte trecho do código:

try {
            Remote remoteObject = Naming.lookup("rmichat");
            
            // Se interface está OK
			if (remoteObject instanceof ChatInterface) {
				// Obtem interface remota
				chatServer = (ChatInterface)remoteObject ;
				
				// Instânciando a classe DisplayMessage() p/ q o ClienteCht possa usar 
				displayChat = new DisplayMessage(otherText); 
			} else {
				System.out.println("O Servidor nao é um Servidor de Chat");
				System.exit(0);
			}
        }

Este trecho faz parte da classe "cliente", quando eu a executo eu caio no else. Alguém poderia me ajudar por favor?

5 Respostas

Fellipex

Pelo que eu entendi do seu problema, está caindo no else pq remoteObject é uma instancia da classe Remote e não da classe ChatInterface como você está tentando verificar no if
Att

andrepm

Me desculpa a possível pergunta muito besta hehehe, mas não entendo, não há classe remote.
A linha 2 realmente está instanciando algo?

A

Não instanceof é um operador booelan que retorna true se o objeto (q está a direita ) é um TIPO da classe que está a esquerda. No caso tá retornando false pois remote não é do tipo chatInterface (ou não estende ou não implementa-o).

matheuslmota

instanceof verifica se um dado objeto é de uma determinada classe, ou estende uma determinada classe ou implementa uma determinada inteface. Quando você faz:

if (remoteObject instanceof ChatInterface){ // }
Você está dizendo “se remoteObject for uma instância de ChatInterface, faça…”. Nesse caso, isso será verdadeiro se remoteObject for instância de alguém que implemente ChatInterface.

douglas_arantes

Acho melhor você estudar o básico do java, senão terá problemas como esse constantemente. Irá lhe tomar um pouco de tempo mas valera a pena.

Criado 11 de novembro de 2012
Ultima resposta 11 de nov. de 2012
Respostas 5
Participantes 5