gpt4 book ai didi

java - 如何使用内部静态最终字段初始化 Java 枚举?

转载 作者:搜寻专家 更新时间:2023-11-01 01:13:44 25 4
gpt4 key购买 nike

我正在设计一款纯文本视频游戏,其中两个角色不常在一起出现,但在内心和性格上却非常相似。

我的问题是我不知道如何使用静态最终内部常量通过构造函数初始化 enum 常量。否则游戏很好。 ;)

这是一个难题:

  1. 枚举常量必须定义在枚举的第一行,如果我没记错的话
  2. 第一行不能引用它后面的任何内容(即“不能引用定义之前的字段”)

我该如何解决这个第 22 条军规?

这里是根据保密协议(protocol)从游戏中发布的一些示例代码:

enum ValiantHeroWithPrincessSavingTendencies {

SUPERMARIO(TYPICAL_QUOTE_FROM_MARIO), ZELDA(TYPICAL_QUOTE_FROM_ZELDA);

private String aPreparedQuotePurportedToBeSpontaneousAlmostImpulsive;

public String getQuoteUnderStressfulCircumstances() {
return aPreparedQuotePurportedToBeSpontaneousAlmostImpulsive;
}

private ValiantHeroWithPrincessSavingTendencies(String quote) {
aPreparedQuotePurportedToBeSpontaneousAlmostImpulsive = quote;
}

private static final String TYPICAL_QUOTE_FROM_ZELDA = "Have at ya!";
private static final String TYPICAL_QUOTE_FROM_MARIO = "We, wagliu'!";
}

我正在尝试使用 TYPICAL_QUOTE_FROM_MARIO 初始化 SUPERMARIO,但我还没有定义 TYPICAL_QUOTE_FROM_MARIO。我认为在 SUPERMARIO 之前移动 private static final 字段是非法的。

最佳答案

唯一可行的选择是 a) 将常量移至另一个类或 b) 将常量直接放入值初始值设定项中。

如果移动常量,则可以使该类成为枚举中的静态类:

enum ValiantHeroWithPrincessSavingTendencies {
SUPERMARIO(Quotes.TYPICAL_QUOTE_FROM_MARIO),
ZELDA(Quotes.TYPICAL_QUOTE_FROM_ZELDA);

private String aPreparedQuotePurportedToBeSpontaneousAlmostImpulsive;

public String getQuoteUnderStressfulCircumstances() {
return aPreparedQuotePurportedToBeSpontaneousAlmostImpulsive;
}

private ValiantHeroWithPrincessSavingTendencies(String quote) {
aPreparedQuotePurportedToBeSpontaneousAlmostImpulsive = quote;
}

private static class Quotes {
private static final String TYPICAL_QUOTE_FROM_ZELDA = "Have at ya!";
private static final String TYPICAL_QUOTE_FROM_MARIO = "We, wagliu'!";
}
}

关于java - 如何使用内部静态最终字段初始化 Java 枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12411790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com