【发布时间】:2013-12-13 06:49:57
【问题描述】:
我目前有一个基于给定整数返回字符串的巨型方法。它使用 switch 语句,包含 686 个案例,每个 case 返回一个 string constant。有 683 个长度从大约 10 到 50 个字符的唯一字符串,全部仅在该方法中使用。我想知道这些字符串何时加载。它们是否在类加载时加载?如果是这样,有没有一种方法可以仅在我第一次需要这些字符串时才加载它们,并在没有更多引用时被丢弃?
目前,我正在从包含字符串表的文件中加载这些字符串。它们将被放置在 WeakHashMap 中。有没有更好的方法来做这些?
我正在考虑的另一种选择是创建一个将每个字符串保存在静态字段中的类。这样,它只会在我第一次获取该字段的值时加载。但这会使我的包裹变大。
此外,dalvik-vm 是否使用相同的字符串常量加载例程。
【问题讨论】:
-
2 字节/字符 * 50 字符/字符串 * 700 字符串 = 70 kB 数据。我不会担心的。
-
您真的应该为此使用关联数组,而不是 switch 语句。我不想看到那个 switch 语句。然后,您可以将关联数组放在您想要的任何级别,并从中提取您需要的内容。
-
@Leifingson,也许您可以将“关联数组”解释为大多数 Java 程序员会认识的东西,例如
java.util.Map -
@PaulDraper 那不是重复的吗?