Java Getters et les Setters
Est-il un meilleur moyen standard pour créer des getters et setters en Java?
Il est assez détaillé d'avoir à définir explicitement les getters et setters pour chaque variable. Est-il un meilleur annotations standard approche?
N'Printemps avoir quelque chose comme ça?
Même C# possède des propriétés.
- Ce n'est probablement pas ce que vous êtes désireux de l'entendre, mais la plupart des IDE peut générer pour vous.
- Afin de répondre au Printemps une partie de la question: non, pas vraiment. D'ailleurs, après "programmation" XML pour quelques jours, vous en redemanderez la joie de codage propre, concis getters et les setters de nouveau 🙂
- Corrigez-moi si je me trompe, mais vous avez encore le besoin d'écrire du C# propriétés n'est-ce pas? Il n'est pas comme ils sont implicites et vous avez seulement besoin de les écrire si vous souhaitez élargir la base en lecture/écriture à un comportement variable. La seule chose qu'ils ont plus de getters et setters, c'est qu'il les garde de côté-à-côte.
- comment se fait-Lombok réponse n'est pas marqué comme réponse?
- Je ne pensais jamais dire ça, mais je m'ennuie de Ruby...
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr si vous devez envisager d'elle "standard", mais Projet De Lombok de résoudre ce problème. Ils utilisent des annotations à remplacer une grande partie de la verbosité de Java.
Certaines personnes sont à la recherche d'autres Java, de frère, de langues, comme Groovy ou Scala. J'ai peur que cela prendra quelques années, si avant la JSR chiffres une "normalisé" façon de "réparer" cela en Java adéquate.
Eclipse possède un menu contextuel l'option qui permettra de générer automatiquement ces pour vous, je suis sûr que beaucoup d'autres IDE ne.
J'ai créé quelques annotations qui ne sont pas eclipse spécifiques.
Voir http://code.google.com/p/javadude/wiki/Annotations
Par exemple:
Mes annotations générer une super-classe; je pense que Lombok modifie le réel de la classe en cours de compilation (qui n'est pas officiellement pris en charge par le Soleil et peut se briser - j'ai peut-être tort sur la façon dont il fonctionne, mais basé sur ce que j'ai vu ils doivent faire qu')
Profitez-en!
-- Scott
Voici un des articles intéressants sur le sujet:
http://cafe.elharo.com/java/why-java-doesnt-need-properties-it-already-has-them/
Je pense que les propriétés sont un raccourci mais c'est plus une petite fonctionnalité que d'une vraie caractéristique importante
La plupart des IDEs de fournir un raccourci pour générer le code (par exemple, Eclipse: clic Droit -> Source> Générer les Getters et les Setters), bien que je constate que ce n'est probablement pas la réponse que vous cherchez.
Certains CIO cadres vous permettent d'annoter les propriétés de sorte qu'ils peuvent être utilisés dans le contexte du cadre par exemple de la Tapisserie du CIO, et le dernier Printemps, je pense (mais cette utilisation est limted à l'utilisation par le cadre)
Je suis d'accord que des accesseurs/mutateurs sont verbeux. Projet De Lombok
a la bonne réponse, comme suggéré par d'autres.
Sinon, vous pouvez utiliser votre IDE est la capacité à générer.
Il est également Spring Roo projet avec son @RooJavaBean annotation. Il a aussi @RooToString et @RooHashCodeEquals ou quelque chose comme ça. Il génère en arrière-plan une AspectJ fichier avec des méthodes appropriées.
Avec Netbeans, il suffit de commencer à taper d'obtenir ou de définir où les getter/setter est à remplacer et l'appel automatique complet (Ctrl+Espace), il va vous donner la possibilité de générer les getter et setter. Il vous fournira également une option pour générer un constructeur ainsi.
Il n'y a pas de meilleure façon, c'est la partie de la langue -- rien de tel qu'une "propriété" mot-clé.
Une alternative, comme d'autres personnes l'ont mentionné, est d'utiliser votre IDE de les générer. Un autre, si vous avez beaucoup des objets qui en ont besoin, c'est de rédiger votre propre outil de génération de code qui prend une classe de base et produit un wrapper avec les getters et les setters.
Vous pouvez aussi tout simplement exposer les variables en tant que membres du public. Toutefois, en bas de la route, ce sera probablement revenir à vous faire du mal, lorsque vous décidez d'ajouter une logique de validation.
Cependant, une dernière pensée: à moins que vos cours sont simplement utilisés pour le transfert des données, il est préférable de ne pas exposer leur état interne. L'OMI, le "comportement" des classes avec des getters et les setters sont une odeur de code.
Comme une alternative possible, avez-vous essayé Scala? Il est compilé en bytecode Java, et a beaucoup de bons raccourcis qui peut faire de votre vie en tant que programmeur Java plus facile.
Propriétés, par exemple:
Et la sortie:
Essayer quelque chose comme cela:
@Getter @Setter private int age = 10;
Plus d'infos ci-dessous:
https://projectlombok.org/features/GetterSetter
Oui, vous avez peu de chance. Groovy ne générer pour vous, mais pas de dés en standard de java. Si vous utilisez Eclipse, vous pouvez générer assez facilement, ainsi que de générer des hashCode() et equals() de fonctions.
C'est le travail de l'IDE pour générer répétitif verbose code des getters/setters
Utiliser votre IDE de générer pour vous et essayez de réduire la quantité de getters/setters que vous avez - vous serez susceptibles de profiter de l'avantage supplémentaire de l'immuabilité.
J'aime la syntaxe C# pour les propriétés, je pense que c'est jolie et propre, et assez propre.
Bien, une option est de ne pas être tellement peur de champs publics. Pour de simples classes que vous savez ne sera jamais à faire de la validation ou du travail supplémentaire sous le capot sur get et set, champs publics nécessitent moins passe-partout, la syntaxe est plus agréable et plus efficace.
Si vous utilisez emacs, il pourrait être possible de définir un emacs macro qui fait cela pour vous. Tout emacs gourous là-bas? 🙂