Java get和set方法的替代样式

Java get和set方法的替代样式,java,styles,Java,Styles,我们都熟悉Java的“getter&setter”方法。它们是创建数据封装的好方法;确保类代码之外的任何私有字段只能通过这些特定方法访问。这些方法可能包括检查、开销、同步等 public class Person(){ private String name; private int birthYear; // traditional getter/setter syntax public String getName(){ return name; }

我们都熟悉Java的“getter&setter”方法。它们是创建数据封装的好方法;确保类代码之外的任何私有字段只能通过这些特定方法访问。这些方法可能包括检查、开销、同步等

public class Person(){
    private String name;
    private int birthYear;

    // traditional getter/setter syntax
    public String getName(){ return name; }
    public int getBirthYear(){ return birthYear; }
    public void setName(String name){ this.name = name; }
    public void setBirthYear(int birthYear){ this.birthYear = birthYear; }

    // proposed overloading getter/setter syntax
    public String name(){ return name; }
    public int birthYear(){ return birthYear; }
    public void name(String name){ this.name = name; }
    public void birthYear(int birthYear){ this.birthYear = birthYear; }

}
我的问题是,使用方法重载为getter/setter使用上面的“建议”语法是否有任何错误?在我看来,它更具可读性和直观性:

Person p = new Person();
p.name("Bob");
System.out.println(p.name());
我能想到的最大缺点是,每个人都太习惯get/set语法,这会降低可读性。不管怎么说,这不是一个大问题,我不介意使用getter/setter,但我刚刚想到了另一种对我来说更漂亮的方法,并且想知道其他人怎么想

谢谢

是的。尽管“get”和“set”只是一种约定,但它们对于JavaBean正确处理反射是绝对必要的

您可以在阅读中找到更多关于或关于

是的。尽管“get”和“set”只是一种约定,但它们对于JavaBean正确处理反射是绝对必要的


你可以在阅读中找到更多关于或关于

FoggyDay的答案是正确的。许多库和工具依赖于get/set/is属性命名约定

然而,Groovy是一种构建在JVM上的脚本语言,它提供了您需要的一些语法优势:

class Person {
  String name
  int birthYear
}
编译成Java,如下所示:

public class Person {
  private String name;
  private int birthYear;

  public String getName(){ return name; }
  public int getBirthYear(){ return birthYear; }
  public void setName(String name){ this.name = name; }
  public void setBirthYear(int birthYear){ this.birthYear = birthYear; }
}

有关更多详细信息,请参见此处:

FoggyDay的回答是正确的。许多库和工具依赖于get/set/is属性命名约定

然而,Groovy是一种构建在JVM上的脚本语言,它提供了您需要的一些语法优势:

class Person {
  String name
  int birthYear
}
编译成Java,如下所示:

public class Person {
  private String name;
  private int birthYear;

  public String getName(){ return name; }
  public int getBirthYear(){ return birthYear; }
  public void setName(String name){ this.name = name; }
  public void setBirthYear(int birthYear){ this.birthYear = birthYear; }
}

请参见此处了解更多详细信息:

尽管我了解JavaBean和内省,但我还没有真正应用它们。尽管如此,我现在仍然相信,由于您已经介绍了一些重要的依赖项(我相信还有更多),因此偏离get/set约定是个坏主意。谢谢你的回复。虽然我知道JavaBean和内省,但我还没有真正应用它们。尽管如此,我现在仍然相信,由于您已经介绍了一些重要的依赖项(我相信还有更多),因此偏离get/set约定是个坏主意。谢谢你的回复。