Verificar e executar método de interface

9 respostas
R

Tenho uma classe que em algumas ocasiões ela será extendida por outra classe que irá implementar determinada interface. Na minha classe base, eu gostaria de verificar se a interface foi implementada e se sim, executar métodos da interface. Ex:

public abstract class base {

se (this implementa interface) {

this.executarMetodoDaInterface()

}

Tem com? Como faço?

9 Respostas

pcalcado

Use o oeprador instanceof, mas você não deveria ter que usar muito ele num modelod e objetos bem definido :wink:

public abstract class base {
if (this instanceof interface) 
this.executarMetodoDaInterface();
}
Thiago_Senna

this instanceof Interface

… mas não esqueça de verificar se está nulo! se não vc vai chamar o método e lançara uma nullPointerException!

pcalcado

Thiago Senna:

… mas não esqueça de verificar se está nulo! se não vc vai chamar o método e lançara uma nullPointerException!

Não esqueça de verificar se this==null? :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll:

R

E para executar o método? como faz?
O this não sabe que a classe que extende ele tem o método.

pcalcado

Ronaldo, o this “sabe” sim… poruqe ele conhece seu tipo.

Provavelmente você está fazendo algo errado, cole seu código por favor.

Thiago_Senna

pcalcado:
Thiago Senna:

… mas não esqueça de verificar se está nulo! se não vc vai chamar o método e lançara uma nullPointerException!

Não esqueça de verificar se this==null? :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll:

Disfarça, disfarça!! :shock: :shock: :shock:

Oloco meu!

o this não, o objeto que você está comparando!

umObjetoQualquer instanceof UmaInterfaceQualquer

Desculpa ai! :wink:

caiofilipini

Não precisa verificar se é null, porque o instanceof retorna false se a referência comparada for null. :wink:

[]'s

Thiago_Senna

caiofilipini:
Não precisa verificar se é null, porque o instanceof retorna false se a referência comparada for null. :wink:

[]'s

Afff… Tem alguma carinha onde possa passar a expressão de dor… tipo, num tenhu onde enfiar a cara???

Disfarça de novo… Disfarça! rsrs…
Thiago Senna

R

Eu tenho uma tela de edição padrão. Mas quando o objeto for composto de outros, ex: Orçamento é composto de item de orçamento, a minha tela de edição terá um painel com uma tabela, onde serão mostrados os itens e terão também botões para remover e adicionar novos itens.
Então, eu acrescentei o atributo painelTabela na minha TelaEdicao. Atualmente eu tenho 2 construtores. Um desses, passa a instância do painelTabela.
Então no construtor do meu ControladorTelaEdicaoModelo (que faz o constructor do mvc), eu preciso verificar se a classe herdada de TelaEdicao (visao, no meu código abaixo) terá ou não o painelTabela. Atualmente eu estou verificando se o painelTabela é null. Mas eu estive pensando que usar interface poderia ser uma opção melhor. Ex: se a tela for precisar de ter painelTabela ela implementa a interface TemPainelTabela. Na minha solução atual, as telas que não usão painelTabela, tem um método acaoAdicionar vazio, que são abstract na tela básica telaEdicao.

visao = CriarVisao(); visao.setSalvarListener( CriarAcaoSalvar() ); visao.setCancelarListener( CriarAcaoCancelar() ); visao.setSelecionarListener( CriarAcaoSelecionar() ); if(visao.getPainelTabela() != null){ visao.getPainelTabela().setAdicionarListener(criarAdicionarListener()); visao.getPainelTabela().setExcluirListener(criarExcluirListener()); }

Criado 5 de maio de 2005
Ultima resposta 5 de mai. de 2005
Respostas 9
Participantes 4