java有类似于C#属性的东西吗?
C#属性(我的意思是获取和设置方法)是一个非常有用的function。 java是否也有类似于C#属性的东西。 我的意思是我们如何在java中实现类似下面的C#代码:
public string Name { get { return name; } set { name = value; } }
先谢谢你
不,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; } }
你可以看看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(或者什么)插件才能使自动编译工作。
属性不仅方便了封装在一个单元中的写入getters
和setters
,而且它们提供了一个良好的语法。
Window.Title = "New"; //which looks natural
而与getters
和setters
通常是
Window.setTitle("New");
曾经有人build议为Java的属性(和事件)添加类似C#的支持,但是看起来下一版本的Java(Java 7)被拒绝了。
看到:
- 为什么在Java 7中不会有本地属性?
- 没有Getter和Setter的Java属性
你可以声明一个私有variables,并手工编写这些方法。 但是,如果您使用的是Eclipse,您可以单击一个variables,select“Source”和“Generate getters and setters”。 这和C#属性一样方便。