2010-10-28 7 views
1

J'ai récemment commencé à apprendre Java. J'ai une question qui est plus sur les conventions utilisées dans Java ...Méthode privée invoquant des conventions

suppose donc je classe A:

public class A { 
    public void methodA{ 
    methodB(); 
    } 

    private void methodB{ 
    } 
} 

Parfois, je vois des gens qui appellent des méthodes privées à l'intérieur de la classe en utilisant ce (par exemple this .methodB();) même s'il n'y a pas d'ambiguïté. Est-il conventionnel de montrer explicitement aux gens qu'ils invoquent une méthode privée ou est-ce simplement 'style' de quelqu'un.

Répondre

2

En soi, l'utilisation de this ne clarifie pas grand-chose. Il peut pointer vers:

  • Un champ d'instance (ou une méthode) ou une classe interne de this, quelle que soit sa visibilité.
  • Champ ou méthode statique ou classe imbriquée d'une des classes héritées par la classe this. (il y a généralement un avertissement dans ce cas, mais ce n'est qu'un avertissement).

Ce qu'il ne l'empêche est:

  • importations statiques
  • variables locales
  • importations de classe (si vous avez une classe imbriquée avec le même nom qu'une classe importée)

Je soulignerai que cela ne garantit pas du tout que la méthode appelée est privée.

C'est la première fois que j'entends parler de cette règle - je soupçonne que, tout au plus, c'est une règle de style (pas très utile) d'une entreprise.

1

C'est juste du style. Personnellement, je en quelque sorte l'impression d'être trop explicite lors de l'accès des membres, mais je peux aussi comprendre que les gens trouvent laid, surtout si vous utilisez des méthodes ou des propriétés de la classe externe d'une classe interne:

public class Outer { 

     private SomeType member; 

     private class Inner { 
      public void innerMethod() { 
       Outer.this.member.someFunction(); 
      } 
     } 
} 

Il peut Aide dans les rares cas où vous introduisez un problème d'ombrage de noms plus tard sans le remarquer - tout à coup vous appelez la mauvaise fonction ou accédez à la mauvaise variable. Cependant, qualifier avec this est verbeux, et ce n'est pas une règle générale.

0

légèrement hors-sujet car nous ne sommes pas aborder une méthode privée, plutôt une variable de classe privée, mais il vaut la peine de mentionner que, parfois, this est nécessaire pour éviter toute ambiguïté:

public class Example { 

    private RowMapper rowMapper; 

    public void setRowMapper(RowMapper rowMapper) { 
    this.rowMapper = rowMapper; 
    } 
} 

Dans l'ensemble, où il n'y a pas d'ambiguïté, alors this est une syntaxe redondante.

Questions connexes