我正在设计一个纯文本视频游戏,其中包含两个不常见的角色,但在内心和性格方面非常相似.
我的问题是我不知道如何enum使用静态最终内部常量通过构造函数初始化常量.否则游戏很不错.;)
这就是困境:
我如何解决这个问题-22?
这里根据保密协议从游戏中发布了一些示例代码:
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'!";
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用TYPICAL_QUOTE_FROM_MARIO初始化SUPERMARIO,但我还没有定义TYPICAL_QUOTE_FROM_MARIO.我想,在SUPERMARIO之前移动私有静态最终字段是非法的.
唯一可行的选择是: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'!";
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过类名访问它们:
enum ValiantHeroWithPrincessSavingTendencies {
SUPERMARIO(ValiantHeroWithPrincessSavingTendencies.TYPICAL_QUOTE_FROM_MARIO),
ZELDA(ValiantHeroWithPrincessSavingTendencies.TYPICAL_QUOTE_FROM_ZELDA);
...
private static final String TYPICAL_QUOTE_FROM_ZELDA = "Have at ya!";
private static final String TYPICAL_QUOTE_FROM_MARIO = "We, wagliu'!";
}
Run Code Online (Sandbox Code Playgroud)
比Brian的解决方案简单
| 归档时间: |
|
| 查看次数: |
2055 次 |
| 最近记录: |