Implements + extends = getinterfaces()?

10 respostas
jingle

bom pus essa duvida no java avançado e como não sei como alterar para cá vou por aqui de novo se algum moderador quiser deletar lá fica a vontade.

ai vai ela, na verdade não é uma divuda e sim queria que alguem me explicace.

Bom não entendi direito o por que isto aconteceu.

tenho uma “classeMae” que implementa uma “interface”

classeMae implements interface

e tenho uma “classeFilha” que extende a “classeMae”

e quando dei um getinterfaces() da classeFilha ela não trouxe a “interface” alguém sabe me explicar porque?
pois querendo ou não querendo ele vai implementar a “interface”

10 Respostas

peerless

jingle:
bom pus essa duvida no java avançado e como não sei como alterar para cá vou por aqui de novo se algum moderador quiser deletar lá fica a vontade.

ai vai ela, na verdade não é uma divuda e sim queria que alguem me explicace.

Bom não entendi direito o por que isto aconteceu.

tenho uma “classeMae” que implementa uma “interface”

classeMae implements interface

e tenho uma “classeFilha” que extende a “classeMae”

e quando dei um getinterfaces() da classeFilha ela não trouxe a “interface” alguém sabe me explicar porque?
pois querendo ou não querendo ele vai implementar a “interface”

Argh… como assim getInterfaces ? A questão é: Se é implementado por interface, os métodos SÃO publics, se SÃO publics todas as filhas da hierarquia de classes terão acesso A NÃO SER QUE você esteja fazendo algo muito errado!

Se for isso, reveja seu código, senão POSTA ele aqui!

thegoergen

Acho que o problema do amigo ali é com reflexão.

Pelo que entendi o

getClass().getInterfaces();

não retorna a interface que a classe mãe da sua classe implementa…

E eu não sei o porquê, já tive um problema parecido, mas eu fiz a classe filha implementar a interface também

jingle

thegoergen:
Acho que o problema do amigo ali é com reflexão.

Pelo que entendi o

getClass().getInterfaces();

não retorna a interface que a classe mãe da sua classe implementa…

E eu não sei o porquê, já tive um problema parecido, mas eu fiz a classe filha implementar a interface também

eu acabei fazendo do modo do mesmo modo que você fez… mas não era essa minha questão.

queria saber um modo de pegar todas interface que a classe possui até mesmo as que suas “maes” tinham.

GustavoLaguna

A ClasseFilha irá ter os membros da interface implementada pela ClasseMãe, passando pelo teste IS-A. Acredito que o getInterfaces() que voce está utilizando deve pegar apenas as interfaces que ele implementa diretamente mesmo.

jingle

e qual seria o método simples de pegar não somente os implementado diretamente?

dipeloco

fazendo

Teste t = new Teste(); Class t2; while((t2 = t.getClass().getSuperclass()) != Object.class){ t2.getInterfaces(); /*FAZ AKI*/ }

Andre_Brito

Nunca lidei com isso, mas não daria pra fazer

super.getInterfaces(); ?

dipeloco,

Por que != de Object.class?
Não consegui entender :expressionless:

Abraço.

Paulo_Silveira

porque Object nao implementa nenhuma interface, mas voce poderia trocar isso ai por != null, ia dar na mesma, e precisa de alguma condicao de parada do laco.

A unica coisa é que o getInterfaces so retorna os que a pessoa explicatamente definiu na classe, mas isso nao quer dizer que ela nao implemente outras por transitividade.

thegoergen

Paulo Silveira:
dedejava:

Por que != de Object.class?
Não consegui entender :expressionless:

porque Object nao implementa nenhuma interface, mas voce poderia trocar isso ai por != null, ia dar na mesma, e precisa de alguma condicao de parada do laco.

A unica coisa é que o getInterfaces so retorna os que a pessoa explicitamente definiu na classe, mas isso nao quer dizer que ela nao implemente outras por transitividade.

E não existre nenhum método que retorne todas elas, até as implementadas por transitividade?
Precisa fazer como o dipeloco disse??

GustavoLaguna

É, acho que tem que implementar mesmo.

Criado 18 de abril de 2008
Ultima resposta 21 de abr. de 2008
Respostas 10
Participantes 7