C#属性(我的意思是get和set方法)是一个非常有用的功能。 java也有类似于C#属性的东西。我的意思是我们如何在java中实现类似下面的C#代码:
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
提前谢谢
答案 0 :(得分:85)
不,Java没有等价物。它只有accessor和mutator方法,getter和setter方法的花哨名称。例如:
public class User {
private String name;
public String getName() { return this.name; }
public void setName(String name) { this.name = name; }
}
答案 1 :(得分:26)
你可以看一下Project Lombok,因为它试图解决编写样板文件Java代码的痛苦。它允许您使用@Getter和@Setter注释,它将提供getBlah()和setBlah()方法:
public class GetterSetterExample {
@Getter @Setter private int age = 10;
}
或者你可以使用@Data,它会自动实现你的hashCode(),equals(),toString()和getter方法,以及非final字段的setter:
@Data public class DataExample {
private String name;
}
我在项目中发现的问题是,它有点伏都,这可能是令人反感的,你必须安装一个eclipse(或者什么)插件才能让自动编译工作。< / p>
答案 2 :(得分:17)
属性不仅方便编写单元中的getters
和setters
,而且它们在调用时提供了良好的语法。
Window.Title = "New"; //which looks natural
与getters
和setters
时通常是
Window.setTitle("New");
答案 3 :(得分:7)
有人建议在Java中添加类似C#的属性(和事件)支持,但对于下一版本的Java(Java 7),它似乎被拒绝了。
请参阅:
答案 4 :(得分:3)
您可以声明一个私有变量,并手动编写方法。但是,如果您使用的是Eclipse,则可以单击某个变量,选择“Source”和“Generate getters and setters”。这和C#属性一样方便。