【发布时间】:2012-08-01 20:04:06
【问题描述】:
我有一个问题并不大,但仍然让我思考如何使用 Java 构造函数和方法。
我有一个代表半径的常量,我声明为 final,并且将其公开给所有人查看。当我永远不会改变半径时,我不希望我的代码被 getRadius() 方法弄得乱七八糟。
我想在构造函数中初始化常量,因为我想在分配半径之前应用某些条件,必须满足某些条件。但是,这些条件确实会占用一些空间,我想将它们放在其他方法中,以使构造函数更简洁。
整个事情最初看起来像这样
public MyProblematicClass {
public final int radius;
public MyProblematicClass(... variables ...) {
if(... long criteria ...) {
radius = n;
}
}
}
我希望它最终会像这样
public MyProblematicClass {
public final int radius;
public MyProblematicClass(... variables ...) {
this.setRadiuswithCriteria(criteria);
}
private void setRadiuswithCriteria(criteria crit) {
if(... crit ...) {
radius = n;
}
我知道我可能会将该方法用于其他目的,这就是给我一个“空白字段 RADIUS 可能尚未初始化”的原因,所以我想知道是否有办法添加一个方法为了清洁起见,只会在构造函数中使用。
【问题讨论】:
-
所有 CAPS 是 Java 中用于常量(又名静态成员)的约定,而不是不变的 final,只需使用正常的半径命名策略即可。
-
将您的 RADIUS 变量声明为私有,并仅允许通过 getRadius 访问它。阅读有关不可变对象的更多信息,以及如何限制其变量值的变化
-
@SanjayT.Sharma 感谢您指出这一点,除了基础知识之外,我对命名约定不太了解...我专门在声明代码之外知道哪些变量我可以'不要修改,我会在问题中更正。
-
@RedOrav:开始接触新事物永远不会太晚。这是马嘴里的官方naming convention link。 :)