当前位置: 首页 > 知识库问答 >
问题:

在这里后面如何初始化final?[副本]

翟曦
2023-03-14

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

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,以后就无法初始化它。

共有1个答案

广宏远
2023-03-14

final关键字表示属性的值只能设置一次。这里的情况就是这样,因为您只在构造函数中设置值。所以这是有效代码。

 类似资料:
  • 为什么x没有在下面初始化? 平均而言,对于一半的迭代,for循环中的将是,从而初始化。对于另一半,找到的 循环替换为 同样糟糕。只有

  • 我找不到任何关于这个具体案例的具体SO帖子,所以我想问一下我认为是/否的问题。 以下是JLS§12.4.2(Java SE 8),清单6-7: 我的问题是:这是否意味着子类的final static变量在超类的静态初始化之前初始化(假设final static作为其声明的一部分初始化)?

  • 问题:给您两个非空链表,表示两个非负整数。数字按相反顺序存储,每个节点包含一个数字。将这两个数字相加,并将其作为链表返回。 您可以假设这两个数字不包含任何前导零,除了数字0本身。 下面是我在JAVA中对这个问题的解决方案: 然而,为什么代码必须是 ,而不仅仅是:“listNode l3=new ListNode(0);”我知道这是错误的。如果我使用此代码,我的答案将返回[]。我不明白为什么会这样?

  • 问题内容: 我通过以下方式初始化了SunPKCS11提供程序: 然后,我使用此提供程序初始化KeyStore,以将密钥用于密码操作。 密码操作完成后, 如何使用PKCS11令牌完成会话? 我曾尝试删除该提供程序,但没有成功。 下次我尝试与令牌通信时,我从令牌 CKR_CRYPTOKI_ALREADY_INITIALIZED* 抛出此异常 * 更新 : 我努力了 但它也不起作用。 我有一个用例,其中

  • 我想在部署初始化成功后运行特定的命令。 这是我的yaml文件: 不过,我希望在成功初始化部署并运行POD之后(而不是之前)运行db迁移命令。 我可以为每个pod手动执行(使用kubectl exec),但这不是很好的扩展性。

  • 这个宣言是什么意思? 这意味着什么?请帮忙。