Implements + extends = getinterfaces()?

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”

[quote=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”[/quote]

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!

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

[quote=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[/quote]

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.

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.

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

fazendo

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

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.

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.

[quote=Paulo Silveira][quote=dedejava]
Por que != de Object.class?
Não consegui entender :expressionless:
[/quote]

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.[/quote]

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

É, acho que tem que implementar mesmo.