【问题标题】:How can final be initialized later here? [duplicate]稍后如何在这里初始化final? [复制]
【发布时间】:2021-01-13 18:35:43
【问题描述】:

所以在看书的时候,我发现了这段代码。

public class NutritionFacts {
private final int servingSize; // (mL) required
private final int servings; // (per container) required
private final int calories; // (per serving) optional
private final int fat; // (g/serving) optional
private final int sodium; // (mg/serving) optional
private final int carbohydrate; // (g/serving) optional
public NutritionFacts(int servingSize, int servings) {
this(servingSize, servings, 0);
}

public NutritionFacts(int servingSize, int servings,
int calories) {
this(servingSize, servings, calories, 0);
}

public NutritionFacts(int servingSize, int servings,
int calories, int fat) {
this(servingSize, servings, calories, fat, 0);
}

public NutritionFacts(int servingSize, int servings,
int calories, int fat, int sodium) {
this(servingSize, servings, calories, fat, sodium, 0);
public NutritionFacts(int servingSize, int servings,
int calories, int fat, int sodium, int carbohydrate) {
this.servingSize = servingSize;
this.servings = servings;
this.calories = calories;
this.fat = fat;
this.sodium = sodium;
this.carbohydrate = carbohydrate;
}
}

所以在这里,final 关键字用在营养名称之前。但它们也在代码的后面部分进行了初始化。那可能吗?因为一旦一个变量被标记为final,以后就不能再初始化了。

【问题讨论】:

  • 它不是“在”nutriton 名称之前使用的。这些 nutriton 名称是构造函数,它们是初始化对象的名称。如果在您的构造函数执行结束时您的最终变量没有值,那么您可能会遇到问题。

标签: java oop final


【解决方案1】:

final 关键字意味着一个属性的值只能设置一次。这就是这种情况,因为您只在构造函数中设置了值。所以这是有效的代码。

【讨论】:

    猜你喜欢
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 2014-08-09
    • 1970-01-01
    • 2015-10-22
    相关资源
    最近更新 更多