Interfaces  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
renatosilva
GUJ Master

Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline

Como saber se uma classe implementa determinada interface?

Terei que fazer uma busca manual em Class.getInterfaces()?
ciczan
JavaGuru
[Avatar]

Membro desde: 22/12/2004 12:57:21
Mensagens: 227
Localização: Curitiba -PR
Offline

Use o instanceof

http://mindprod.com/jgloss/instanceof.html
[MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

instanceof é legal e não faz mal!

Existe até um bytecode específico para instanceof na JVM, ou seja, isso é executado da maneira mais rápida possível.

Dá até para usar aqueles truques de "marker interfaces" (interfaces que não têm métodos nem constantes, que são usadas apenas para "marcar" a classe. )
Já vi muita gente boa que faz o seguinte: não conhece o lance de "marker interfaces" e define que todas as classes que deviam fazer uma determinada coisa (por exemplo, tratam de pagamentos) têm de ter um nome terminado com um determinado sufixo. (Não, não era que todas tinham de herdar de uma determinada classe - como não existe múltipla herança em Java, se você fizesse isso iria amarrar demais o sistema).
Então para testar, você precisa pegar o nome da classe (obj.getClass().getName()) e usar algo como "endsWith". Isso é bem mais lento que o esquema de "marker interface" e tem cheiro de gambiarra.
[WWW]
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline

thingol wrote:
Dá até para usar aqueles truques de "marker interfaces" (interfaces que não têm métodos nem constantes, que são usadas apenas para "marcar" a classe. )


Vale lembrar que no Tiger foi implementado metadata também para evitar esse uso de interface, mas Java > 5 é uma boa saída, quando necessário.

[]s
[Email] [WWW] [Yahoo!] [MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team