7 votes

Pourquoi ne puis-je pas accéder à une variable déclarée dans une classe, qui implémente une interface Java, à partir de Scala ?

En Java, j'ai une classe qui implémente une interface :

AlertDialog implements DialogInterface

Si certaines variables sont déclarées à l'intérieur de l'interface, je peux y accéder :

AlertDialog.BUTTON_POSITIVE

Mais en Scala, la ligne ci-dessus ne compile pas. Il semble qu'elle soit cachée. Existe-t-il un moyen d'accéder à ces variables en Scala sans créer un nouvel objet ou faire quoi que ce soit d'autre ?

14voto

Submonoid Points 1817

Pour donner un peu plus de détails : la raison pour laquelle on ne peut pas y accéder est que George parle de membres statiques définis sur l'interface. Scala n'a pas de membres statiques - au lieu de cela, on crée un objet de type object qui est une classe ordinaire avec une seule implémentation. Lorsque vous étendez une interface Java, Scala n'étendra que les membres non statiques, car les membres statiques sont traités comme faisant partie d'une classe compagnon. object . L'objet compagnon est nommé de la même manière que l'interface, vous pouvez donc y accéder en tant que DialogInterface.BUTTON_POSITIVE .

2voto

George Pligor Points 503

Il n'y a aucun moyen en Scala d'avoir accès à ces variables à partir de l'interface de l'utilisateur. AlertDialog mais vous pouvez utiliser l'interface elle-même comme objet pour y accéder.

Vous pouvez donc accéder directement aux variables à partir de l'interface :

DialogInterface.BUTTON_POSITIVE

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X