Zle*_*lik 5 java getter-setter
在getter和setter中进行一些数据处理/验证是否是一种好习惯?在维基百科中,有两个示例:
这些是好的例子还是最好避免?如果最好避免这种情况,如何更好地实现以上两个示例?
更新:请不要以日期等为严重的例子。这只是一个例子,当然它可能是愚蠢的。
我有的真实例子。
我有一个外部第三方系统,我必须进行集成。这个外部系统从我那里希望得到一些带有getter和setter方法的数据。我必须在此处传递2个字段,id(类似于09df723987cd7(假设为GUID))和formattedID类似于“ objecttype / 09df723987cd7”。我无法更改此外部系统。
我想像实施
getId() {
return id
}
getFormattedId() {
return objectType + "/" + id;
}
Run Code Online (Sandbox Code Playgroud)
objectType是此类中的另一个字段。
我的问题:可以,还是有一些更优雅的实现方法?
您提供的示例不太合适,至少在形式和您提到的名称上不合适。
我将尝试一些更好的例子:
塞特犬
您可能主要想将它们用于验证。例如,setDate(Date d)可以检查数据是否在某个范围内,例如未来不超过 20 年等(取决于您的要求)。
吸气剂
如果这些包含的不仅仅是简单的逻辑,它们可能代表虚拟属性,即没有基础字段但动态计算的属性。
让我们举getAmount()个例子:可能没有任何字段amount,或者由于某种原因(例如没有精度问题),金额可能以美分(或更小)存储。因此getAmount() 可能看起来像这样:
public double getAmount() {
return amountInCents / 100.0;
}
Run Code Online (Sandbox Code Playgroud)
请注意,该名称getAmount()可能会产生误导,因此您最好使用类似getAmountInUSD()或相似的名称。
一般的
在大多数情况下,建议在 Java 中使用 getter 和 setter,因为您可以执行以下操作(列表不完整):
| 归档时间: |
|
| 查看次数: |
2155 次 |
| 最近记录: |