java - 创建大型静态资源文件是否存在问题?

标签 java string static

创建大型静态资源文件是否可以接受?例如:

public class Resources {
    public static String STRING1 = "xxx";
    public static String STRING2 = "xxx";
    ...
    public static String STRINGN = "xxx";
}

我想要一个大文件,其中包含应用程序将使用的所有字符串的列表。这会引起问题吗?我不完全确定静态类如何保存在内存中,所以我不知道这是否会导致内存问题。是太“丑”还是造型不好?有更好的方法吗?

最佳答案

我会将语言文件和文件系统中的此类内容保存为纯文本(或某种特殊格式)。然后您可以轻松更改文本等。然后你可以编写一个静态类(LanguageFactory)来获取你的字符串。

示例语言文件:

English language file

!--OutGameMenu Strings--!

joinGame = Join Game createGame = Create Game

语言工厂:

public class LanguageFactory {
    private static final String PREFIX = "/languages/";
    public static final int ENGLISH = 1;
    public static final int GERMAN = 2;
    public static final int DEFAULT = ENGLISH;
    //List of available InProperties:

    public static final String JOIN_GAME = "joinGame";
    public static final String CREATE_GAME = "createGame";

    private static Properties language;

    public static String getString(String text){
        if(language == null){
            setLanguage(DEFAULT);
        }
        return language.getProperty(text);
    }

    public static void setLanguage(int language){
        switch (language) {
        case ENGLISH:
            setLanguage("en.lang");
            break;
        case GERMAN:
            setLanguage("de.lang");
            break;
        }
    }

    private static void setLanguage(String path){
        language = new Properties();
        try {
            InputStream fi = LanguageFactory.class.getResourceAsStream((PREFIX+path));
            language.load(fi);
            fi.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

关于java - 创建大型静态资源文件是否存在问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7689990/

相关文章:

java - 将多行文本值设置为 imageview 不起作用

java - 找到最近的邻居/经纬度

java - Java中字符串池的底层机制?

string - Swift 通过字符串调用类函数或属性

java - 从键盘读取数据并存储在字符串数组中

iphone - 如何使用类方法来分发 UIManagedDocument 的多个共享实例?

java - 计算器算法

java - 用于提取方法/注释的 Java 源代码静态代码解析器

css - Django:无法加载/static 中的 CSS 文件

java - 每个枚举的保存方法