首页 > 解决方案 > Java构造函数中计算类属性的约定

问题描述

在 Java 中计算类属性的约定是什么?

例如,直接在构造函数中进行计算:

public class Person {
    public Person(int birthyear){
        this.birthyear = birthyear;
        this.age = 2020 - birthyear;
    }    
}

与调用进行计算的方法相比:

public class Person {
    public Person(int birthyear){
        this.birthyear = birthyear;
        this.age = calculateAge(birthyear);
    }    
}

在计算复杂的地方(不像这里),我倾向于使用第二个示例,但希望尽可能遵循约定。

这可能是重复的,在这种情况下,请指出正确的方向(在我的搜索中找不到)。

标签: javaconstructor

解决方案


没有真正的约定。它取决于计算的复杂性或可读性。对于像我这样简单的一个2020 - birthyear,如果将它放在构造函数中,我会认为它非常好。

对于更复杂的情况,我宁愿将其推迟到一种方法上。但请记住:确保将其设为私有,否则子类可以访问未完全构造的对象。


推荐阅读