稍后如何在此处初始化final?

问题描述

所以在读书时,我遇到了这段代码。

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,calories,int calories,int fat) {
this(servingSize,fat,int fat,int sodium) {
this(servingSize,sodium,0);
public NutritionFacts(int servingSize,int sodium,int carbohydrate) {
this.servingSize = servingSize;
this.servings = servings;
this.calories = calories;
this.fat = fat;
this.sodium = sodium;
this.carbohydrate = carbohydrate;
}
}

因此,在这里,最终关键字在营养名称之前使用。但是它们也在代码的后面部分中初始化。那可能吗?因为一旦将变量标记为final,就无法在以后初始化。

解决方法

final关键字表示属性值只能设置一次。这是这种情况,因为您仅在构造函数中设置了值。因此,这是有效的代码。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...