Java get和set方法的替代样式
我们都熟悉Java的“getter&setter”方法。它们是创建数据封装的好方法;确保类代码之外的任何私有字段只能通过这些特定方法访问。这些方法可能包括检查、开销、同步等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; }
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约定是个坏主意。谢谢你的回复。