我的Java有点生疏(过去几年一直在做C#).我也希望这不是一个非常主观的问题.
无论如何说我上课了Person(是的,有点陈词滥调,我知道),没有行为(C#版本):
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
// say 10+ properties
}
Run Code Online (Sandbox Code Playgroud)
等效的Java版本将如何?我知道我可以写一堆getter和setter(但是我说有10多个属性),感觉就像很多样板.这样做是不好的做法:
public class Person {
public String name;
public int age;
// rest of the stuff here
}
Run Code Online (Sandbox Code Playgroud)
我对此感到有点不安.我意识到没有"正确答案"但是,我对一般惯例和最佳实践更感兴趣.
你应该写getter和setter.或者更好 - 让IDE自动生成它们.否则你打破了封装.也许你只需要一个吸气剂.
使用getter或setter的另一个好处是可以在返回或设置字段之前进行一些检查或预处理.
以下是示例代码段:
private String name;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
Run Code Online (Sandbox Code Playgroud)
您可以选择使用http://projectlombok.org/并使用注释将其写为:
@Getter @Setter
private String name;
Run Code Online (Sandbox Code Playgroud)
代码生成是在编译时完成的.
最好让getter/setter返回字段,以便封装字段的计算方式.尽管很少发生,但有时候你想要改变这样的事情:
getBalance()
{
return this.staticBalance;
}
Run Code Online (Sandbox Code Playgroud)
对此:
getBalance()
{
return calculateBalance();
}
Run Code Online (Sandbox Code Playgroud)
Java中改变字段行为而不会改变大量代码(或者更糟糕的是要求API用户更改代码串)的唯一方法是使用getter和setter.
其他好处是:
编写样板文件很繁琐,但是一个好的IDE将从字段名称中为您生成这些方法.
| 归档时间: |
|
| 查看次数: |
10279 次 |
| 最近记录: |