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(或者什么)插件才能使自动编译工作。

属性不仅方便了封装在一个单元中的写入getterssetters ,而且它们提供了一个良好的语法。

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

而与getterssetters通常是

 Window.setTitle("New"); 

曾经有人build议为Java的属性(和事件)添加类似C#的支持,但是看起来下一版本的Java(Java 7)被拒绝了。

看到:

  • 为什么在Java 7中不会有本地属性?
  • 没有Getter和Setter的Java属性

你可以声明一个私有variables,并手工编写这些方法。 但是,如果您使用的是Eclipse,您可以单击一个variables,select“Source”和“Generate getters and setters”。 这和C#属性一样方便。