web-dev-qa-db-fra.com

Java a-t-il quelque chose de similaire aux propriétés C #?

Les propriétés C # (je veux dire les méthodes get et set) sont une fonctionnalité très utile. Java a 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 en Java:

public string Name
{
    get
    {
        return name;
    }

    set
    {
        name = value;
    }
}

merci d'avance

74
Nima Rikhtegar

Non, Java n'a pas l'équivalence. Il n'a que des méthodes d'accesseur et de mutateur, des noms fantaisistes 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; }
}
86
Kevin Le - Khnle

Vous pouvez jeter un œil à Project Lombok alors qu'il essaie de réduire la peine d'écrire la plaque de la chaudière Java code. Il vous permet d'utiliser soit @Getter soit @Setter annotations, 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 des setters sur des champs non finaux:

@Data public class DataExample {
  private String name;
}

Les problèmes que j'ai rencontrés avec le projet sont cependant que tout cela est 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.

26
Ben Smith

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

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

Window.setTitle("New");
17
Renjith

Il a été proposé d'ajouter une prise en charge 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
Jesper

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 setters". C'est à peu près aussi pratique que les propriétés C #.

3
Larry Watanabe