Est l'appel de méthodes statiques via un objet “mauvaise forme”? Pourquoi?

Dans une récente question, quelqu'un a demandé à propos des méthodes statiques et l'une des réponses a déclaré qu'en général, il les appelle avec quelque chose comme:

MyClassName.myStaticMethod();

Les commentaires également déclaré que vous pourrait aussi l'appeler par l'intermédiaire d'un objet avec:

MyClassName myVar;
myVar.myStaticMethod();

mais qu'il était considéré comme une mauvaise forme.

Maintenant, il me semble que cela peut réellement faire de ma vie plus facile, donc je n'ai pas à vous inquiétez sur ce qui est statique ou non a.

Est il y a un problème avec l'appel de fonctions statiques par un objet? Évidemment, vous ne voulez pas créer une nouvelle marque d'objet juste de l'appeler:

Integer xyzzy;
int plugh = xyzzy.parseInt ("42", 10);

Mais, si vous avez déjà un objet du type désiré, est-il un problème dans à l'aide de il?


a de toute Évidence, je ne peux pas appeler un non-statique méthode:

MyClassName.myNonStaticMethod();

mais ce n'est pas la question que je veux parler ici.

  • Voir cette SORTE de réponse pour l'info stackoverflow.com/questions/610458/...
  • Quand j'ai lu le code et il y a un appel à une méthode, pour moi, c'est très pertinents pour être en mesure de dire tout de suite que cet appel ne peut pas lire ni modifier l'état de l'objet auquel elle appartient. Avec MyClassName.myStaticMethod(); il n'y a même pas besoin de réfléchir une seconde. Avec myVar.myStaticMethod(); vous avez besoin de voir le code de la méthode, et vous serez toujours dans le doute pour tous les appels. Bien sûr, plusieurs IDEs pourrait faire de cette information facile à retrouver (Javadoc info-bulles, la coloration syntaxique, etc.) mais je ne voudrais pas compter sur elle pour décider de la manière d'écrire le code.
InformationsquelleAutor paxdiablo | 2011-10-25