gpt4 book ai didi

java - Java 枚举的性能

转载 作者:搜寻专家 更新时间:2023-10-31 08:05:08 24 4
gpt4 key购买 nike

我正在考虑在我正在开发的 Java 游戏中使用 enum 类型来管理 i18n,但我很好奇在使用具有大量元素的枚举时可能发生的性能问题(我有数千个)想想)。

实际上我正在尝试类似的东西:

public enum Text {
STRING1,
STRING2,
STRING3;

public String text() {
return text;
}

public String setText() {
this.text = text;
}
}

然后为了加载它们,我只需填写字段即可:

static
{
Text.STRING1.setText("My localized string1");
Text.STRING2.setText("My localized string2");
Text.STRING3.setText("My localized string3");
}

当然,当我必须管理多种语言时,我会从一个文件中加载它们。

我想问的是

  • 是否为每个元素分配了一个对象(除了字符串)? (我想是的,因为枚举是用对象实现的)
  • 如何从枚举中检索到正确的元素?它在编译时是静态的吗? (我的意思是当我在某个地方使用 Text.STRING1.text())。所以它应该是恒定的复杂性或者它们可能只是在编译阶段被替换..
  • 总的来说,这是一个好的方法还是我应该期待其他东西?

谢谢

最佳答案

找到并改编了枚举和 ResourceBundle 的完美组合:

public enum Text {
YELL, SWEAR, BEG, GREET /* and more */ ;

/** Resources for the default locale */
private static final ResourceBundle res =
ResourceBundle.getBundle("com.example.Messages");

/** @return the locale-dependent message */
public String toString() {
return res.getString(name() + ".string");
}
}

# File com/example/Messages.properties
# default language (english) resources
YELL.string=HEY!
SWEAR.string=§$%&
BEG.string=Pleeeeeease!
GREET.string=Hello player!

# File com/example/Messages_de.properties
# german language resources
YELL.string=HEY!
SWEAR.string=%&$§
BEG.string=Biiiiiitte!
GREET.string=Hallo Spieler!

关于java - Java 枚举的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4490721/

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