java a-t-il quelque chose de similaire aux propriétés C#? [dupliquer]


Cette question a déjà une réponse ici:

Les propriétés C# (je veux dire les méthodes get et set) sont une fonctionnalité très utile. java a-t-il aussi quelque chose de similaire aux propriétés C#. Je veux dire comment nous pouvons implémenter quelque chose comme le code C# suivant dans java:

public string Name
{
    get
    {
        return name;
    }

    set
    {
        name = value;
    }
}

Merci d'avance

Author: Nima Rikhtegar, 2010-06-03

5 answers

Non, Java n'a pas l'équivalence. Il n'a que des méthodes accessor et mutator, des noms de fantaisie pour les méthodes getter et setter. Par exemple:

public class User {
    private String name;

    public String getName() { return this.name; }
    public void setName(String name) { this.name = name; }
}
 80
Author: Kevin Le - Khnle, 2010-06-03 04:01:57

Vous pouvez jeter un oeil à Projet Lombok comme il essaie de prendre la douleur de l'écriture de la plaque de chaudière code Java. Il vous permet d'utiliser les annotations @Getter et @Setter, qui fourniront les méthodes getBlah() et setBlah ():

public class GetterSetterExample {
  @Getter @Setter private int age = 10;
}

Ou vous pouvez simplement utiliser @Data et il implémentera automatiquement vos méthodes hashCode (), equals (), toString () et getter, ainsi que les setters sur les champs non finaux:

@Data public class DataExample {
  private String name;
}

Les problèmes que j'ai trouvés avec le projet, cependant, sont que c'est tout un peu vaudou, ce qui peut être rebutant, et que vous devez installer un plugin eclipse (ou quoi que ce soit) pour que la compilation automatique fonctionne.

 25
Author: Ben Smith, 2010-06-03 04:43:42

Les propriétés

Sont non seulement pratiques en termes d'écriture getters et setters encapsulées dans une unité , mais elles fournissent également une bonne syntaxe au point d'appel.

Window.Title =  "New"; //which looks natural

Alors qu'avec getters et setters c'est généralement

Window.setTitle("New");
 15
Author: Renjith, 2012-11-20 07:06:20

Il y a eu une proposition pour ajouter un support de type C#pour les propriétés (et les événements) à Java, mais il semble que cela soit rejeté pour la prochaine version de Java (Java 7).

Voir:

 7
Author: Jesper, 2017-05-23 11:54:33

Vous pouvez simplement déclarer une variable privée et écrire les méthodes à la main. Cependant, si vous utilisez Eclipse, vous pouvez cliquer sur une variable, sélectionner "Source" et "Générer des getters et des setters."C'est à peu près aussi pratique que les propriétés C#.

 3
Author: Larry Watanabe, 2010-06-03 04:08:04