java ha qualcosa di simile alle proprietà c#? [duplicato]


Questa domanda ha già una risposta qui:

Le proprietà C# (intendo i metodi get e set) sono una caratteristica molto utile. java ha anche qualcosa di simile alle proprietà c#. Voglio dire come possiamo implementare qualcosa come il seguente codice c # in java:

public string Name
{
    get
    {
        return name;
    }

    set
    {
        name = value;
    }
}

Grazie in anticipo

Author: Nima Rikhtegar, 2010-06-03

5 answers

No, Java non ha l'equivalenza. Ha solo metodi di accesso e mutatore, nomi di fantasia per i metodi getter e setter. Ad esempio:

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

Potresti dare un'occhiata a Project Lombok mentre cerca di eliminare il dolore dalla scrittura del codice Java della piastra della caldaia. Consente di utilizzare le annotazioni @ Getter e @ Setter, che forniranno i metodi getBlah() e setBlah ():

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

Oppure puoi semplicemente usare @ Data e implementerà automaticamente i tuoi metodi hashCode(), equals(), toString() e getter, insieme ai setter sui campi non finali:

@Data public class DataExample {
  private String name;
}

I problemi che ho trovato con il progetto, tuttavia, sono che è tutto un po ' voodoo, che può essere scoraggiante, e che devi installare un plugin eclipse (o che cosa mai) per far funzionare la compilazione automatica.

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

Le proprietà

Non sono solo convenienti in termini di scrittura getters e setters incapsulate in un'unità , ma forniscono anche una buona sintassi al punto di chiamata.

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

Mentre con getters e setters di solito è

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

È stata proposta di aggiungere il supporto simile a c#per le proprietà (e gli eventi) a Java, ma sembra che questo sia stato rifiutato per la prossima versione di Java (Java 7).

Vedi:

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

Puoi semplicemente dichiarare una variabile privata e scrivere i metodi a mano. Tuttavia, se si utilizza Eclipse, è possibile fare clic su una variabile, selezionare "Source" e "Generate getter e setter."Questo è conveniente quanto le proprietà C#.

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