В java есть что-то похожее на свойства C#?
Свойства C# (я имею в виду методы get и set) - очень полезная функция. есть ли в java что-то похожее на свойства C#. Я имею в виду, как мы можем реализовать что-то вроде следующего кода C# в Java:
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
заранее спасибо
5 ответов
Нет, Java не имеет эквивалентности. Он имеет только методы доступа и мутатора, причудливые имена для методов получения и установки. Например:
public class User {
private String name;
public String getName() { return this.name; }
public void setName(String name) { this.name = name; }
}
Вы можете взглянуть на Project 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, вы можете нажать на переменную, выбрать "Source" и "Generate getter and setters". Это примерно так же удобно, как свойства C#.