我有一个问题不是真的那么大,但仍然给了我一些关于如何使用Java构造函数和方法的想法。在另一种方法中在构造函数中初始化最终变量
我有一个代表半径的常量,我声明了最终的结果,并且也公开给大家看。当我永远不会改变半径时,我不希望我的代码散布在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中用于常量(又名。静态成员)的惯例,而不是不改变的总决赛,只是使用常规的radius命名策略。 – 2012-08-01 11:45:29
声明你的RADIUS变量是私有的,只允许通过getRadius访问它。 阅读更多关于不可变对象,以及如何限制其变量的变化值 – 2012-08-01 11:46:36
@ SanjayT.Sharma感谢您指出,不知道关于命名约定除了基础知识之外......我特别是在声明代码之外的所有大写都知道哪些变量是我无法修改的,我会在问题中予以更正。 – RedOrav 2012-08-01 12:00:52