Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

inner-classe dans une interface ?

4 réponses
Avatar
Pierre Crescenzo
Bonjour,

Est-il possible d'avoir une inner-classe (ou inner-interface) dans une
interface en Java ? Je précise que ma question porte sur le langage et
non sur ce que savent faire les différents compilateurs ou interprètes
(ça, je peux essayer mais ça ne répond pas à la question :-)).

Je ne trouve aucune indication, ni dans un sens ni dans l'autre, dans les
documents et livres que j'ai lus.

Merci.

[CITATION ALÉATOIRE : Aimer, ce n'est pas se regarder l'un l'autre,
c'est regarder ensemble dans la même direction. Antoine de
Saint-Exupéry]

--
Pierre Crescenzo
mailto:Pierre@crescenzo.nom.fr
http://www.crescenzo.nom.fr/

4 réponses

Avatar
Hervé AGNOUX
Pierre Crescenzo wrote:

Bonjour,

Est-il possible d'avoir une inner-classe (ou inner-interface) dans une
interface en Java ? Je précise que ma question porte sur le langage et
non sur ce que savent faire les différents compilateurs ou interprètes
(ça, je peux essayer mais ça ne répond pas à la question :-)).



NON.

Par définition, une inner-classe est DANS une classe. Pour toutes instance
d'inner classe, il doit y avoir une instance englobante, de la classe qui
englobe la inner classe ; il est vrai que, quelque fois, on se mélange un
peu les pédales. Mais c'est pour voir si tout le monde suit bien.


--
Hervé AGNOUX
http://www.diaam-informatique.com

Avatar
Xavier Tarrago
Je ne sais pas si c'est autorisé, mais eclipse le permet (à première vue).
C'est super intéressant car ça permettrrait de mettre du code static, ou des
classes helper dans une interface pour réutilisation dans les
implémentations. Je vais creuser ça.


"Hervé AGNOUX" a écrit dans le
message de news:42a5d87b$0$23320$
Pierre Crescenzo wrote:

Bonjour,

Est-il possible d'avoir une inner-classe (ou inner-interface) dans une
interface en Java ? Je précise que ma question porte sur le langage et
non sur ce que savent faire les différents compilateurs ou interprètes
(ça, je peux essayer mais ça ne répond pas à la question :-)).



NON.

Par définition, une inner-classe est DANS une classe. Pour toutes instance
d'inner classe, il doit y avoir une instance englobante, de la classe qui
englobe la inner classe ; il est vrai que, quelque fois, on se mélange un
peu les pédales. Mais c'est pour voir si tout le monde suit bien.


--
Hervé AGNOUX
http://www.diaam-informatique.com



Avatar
Pierre Crescenzo
Bonjour,

Est-il possible d'avoir une inner-classe (ou inner-interface) dans
une interface en Java ? Je précise que ma question porte sur le
langage et non sur ce que savent faire les différents compilateurs
ou interprètes (ça, je peux essayer mais ça ne répond pas à la
question :-)).


NON.



C'était également mon intuition mais je me trompais (cf. plus bas).

Par définition, une inner-classe est DANS une classe. Pour toutes
instance d'inner classe, il doit y avoir une instance englobante, de
la classe qui englobe la inner classe ; il est vrai que, quelque
fois, on se mélange un peu les pédales. Mais c'est pour voir si tout
le monde suit bien.



Ce n'est pas exact : les classes membres statiques et interfaces membres
statiques ne sont pas associées à une instance englobante.

Je ne sais pas si c'est autorisé, mais eclipse le permet (à première
vue). C'est super intéressant car ça permettrrait de mettre du code
static, ou des classes helper dans une interface pour réutilisation
dans les implémentations. Je vais creuser ça.


En effet.

Je viens de trouver la réponse par compilation d'informations des
dernières versions françaises de "Java in a Nutshell" et "Au coeur de
Java". Les interfaces peuvent contenir des classes internes et des
interfaces internes, à condition que ces classes et interfaces soient
publiques et statiques. En fait, même les interfaces internes sont
autorisées à contenir des classes et interfaces internes, suivant la
même contrainte.

Merci pour vos réponses !

A+

[CITATION ALÉATOIRE : Seul ce qui est mesurable est objectif. Seul ce
qui est objectif est scientifique. Seul ce qui est scientifique a une
existence réelle. Seul ce qui est mesurable est réel. Lord Kelvin]

--
Pierre Crescenzo
mailto:
http://www.crescenzo.nom.fr/



Avatar
Hervé AGNOUX
Pierre Crescenzo wrote:


Ce n'est pas exact : les classes membres statiques et interfaces membres
statiques ne sont pas associées à une instance englobante.



Oui, j'avais oublié les statiques, mais pour moi ce ne sont pas vraiment des
classes internes, mais juste une façon de s'organiser. J'aurais dû le
préciser, j'ai été trop rapide dans mes explications.

Cordialement.


--
Hervé AGNOUX
http://www.diaam-informatique.com