2 votes

Référence de méthode statique locale Java syntaxe abrégée

Y a-t-il un moyen abrégé d'obtenir une référence de méthode vers une méthode statique locale de la même manière que le mot-clé this ou le préfixe de classe peuvent être omis lors de l'invocation d'une méthode?

La chose évidente serait d'utiliser ::myStaticMethod mais cela ne semble pas compiler:

class MyClass {
   static void myStaticMethod () {}
   static Runnable runner = ::myStaticMethod; // ne compile pas
      // nécessite un préfixe MyClass malgré le fait qu'elle soit dans la même classe
}

3voto

Oli Charlesworth Points 148744

Hélas, il n'y a pas de raccourci. Selon la JLS (15.13), la grammaire des références de méthode est la suivante :

MethodReference:
    ExpressionName :: [TypeArguments] Identifier 
    ReferenceType :: [TypeArguments] Identifier 
    Primary :: [TypeArguments] Identifier 
    super :: [TypeArguments] Identifier 
    TypeName . super :: [TypeArguments] Identifier 
    ClassType :: [TypeArguments] new 
    ArrayType :: new

Dans tous les cas, il y a quelque chose avant le ::.

Cette grammaire est également discutée plus informellement dans le tutoriel Java sur les références de méthode.

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