Java是否具有类似于C#属性的东西?

2022-08-31 11:16:23

C#属性(我的意思是get和set方法)是一个非常有用的功能。Java是否也有类似于C#属性的东西?我的意思是我们如何在java中实现类似于以下C#代码的东西:

public string Name
{
    get
    {
        return name;
    }

    set
    {
        name = value;
    }
}

答案 1

不,Java没有等价物。它只有访问器和赋值器方法,getter和setter方法的花哨名称。例如:

public class User {
    private String name;

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

答案 2

你可以看看 Project Lombok,因为它试图消除编写样板 Java 代码的痛苦。它允许您使用和注释,这将提供 和 方法:@Getter@SettergetBlah()setBlah()

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

或者你可以直接使用,它会自动实现你的、和 getter 方法,以及非最终字段上的 setter:@DatahashCode()equals()toString()

@Data public class DataExample {
  private String name;
}

然而,我发现这个项目的问题是,它都有点巫毒教,这可能令人反感,而且你必须安装一个Eclipse(或其他)插件才能使自动编译工作。