есть ли у java что-то похожее на свойства C#? [дубликат]


этот вопрос уже есть ответ здесь:

свойства C# (я имею в виду get и set методы) являются очень полезной функцией. есть ли у java что-то похожее на свойства C# тоже. Я имею в виду, как мы можем реализовать что-то вроде следующий код C# в java:

public string Name
{
    get
    {
        return name;
    }

    set
    {
        name = value;
    }
}

спасибо заранее

5 68

5 ответов:

нет, Java не имеет эквивалентности. Он имеет только методы доступа и мутатора, причудливые имена для методов getter и setter. Например:

public class User {
    private String name;

    public String getName() { return this.name; }
    public void setName(String name) { this.name = name; }
}

вы могли бы взглянуть на Проект Lombok как он пытается взять боль из написания кода Java котельной плиты. Это позволяет либо использовать @Getter и @ Setter аннотации, которые обеспечат getBlah() и setBlah () методы:

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

или вы можете просто использовать @Data, и он автоматически реализует ваши методы hashCode(), equals(), toString() и getter, а также сеттеры на неокончательных полях:

@Data public class DataExample {
  private String name;
}

проблемы, которые я нашел с проект, однако, заключается в том, что все это немного вуду, что может быть отталкивающим, и что вам нужно установить плагин eclipse (или что-либо еще), чтобы заставить автоматическую компиляцию работать.

свойства не только удобно с точки зрения написания getters и setters инкапсулированные в единицу, но также они обеспечивают хороший синтаксис в точке вызова.

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

С getters и setters обычно

Window.setTitle("New");

было предложено добавить C# - подобную поддержку свойств (и событий) в Java, но похоже, что это отклонено для следующей версии Java (Java 7).

посмотреть:

вы можете просто объявить закрытую переменную и написать методы вручную. Однако, если вы используете Eclipse, вы можете нажать на переменную, выбрать "источник" и "создать геттеры и сеттеры."Это примерно так же удобно, как в C# свойства.