当前位置: 首页 > 面试题库 >

java属性文件作为枚举

轩辕华辉
2023-03-14
问题内容

是否可以将属性文件转换为枚举。

我有一个带有很多设置的属性文件。例如

equipment.height
equipment.widht
equipment.depth 
and many more like this and not all are as simple as the example

开发人员必须知道密钥才能获得属性的值。而是可以做一些事情,开发人员可以在其中键入MyPropertyEnum。并且键列表将显示在IDE中,就像它显示为Enum一样

MyPropertyEnum.height

问题答案:

我经常使用属性文件+枚举组合。这是一个例子:

public enum Constants {
    PROP1,
    PROP2;

    private static final String PATH            = "/constants.properties";

    private static final Logger logger          = LoggerFactory.getLogger(Constants.class);

    private static Properties   properties;

    private String          value;

    private void init() {
        if (properties == null) {
            properties = new Properties();
            try {
                properties.load(Constants.class.getResourceAsStream(PATH));
            }
            catch (Exception e) {
                logger.error("Unable to load " + PATH + " file from classpath.", e);
                System.exit(1);
            }
        }
        value = (String) properties.get(this.toString());
    }

    public String getValue() {
        if (value == null) {
            init();
        }
        return value;
    }

}

现在,您还需要一个属性文件(我经常将其放在src中,因此将其打包到JAR中),其属性与在枚举中使用的一样。例如:

constants.properties:

#This is property file...
PROP1=some text
PROP2=some other text

现在,我经常在要使用常量的类中使用静态导入:

import static com.some.package.Constants.*;

以及示例用法

System.out.println(PROP1);


 类似资料:
  • 如何使用属性文件在应用程序中存储全局变量,同时使用公共静态最终变量将它们注入应用程序? 看过这个问题后,我希望找到一种方法,可以从属性文件将静态final变量注入到应用程序中。我很失望,但最终找到了一个鱼与熊掌兼得的方法。 我在下面张贴这个解决方案,以添加到简编所以...

  • 问题内容: 在.properties文件中,我可以在第一个字符之后使用字符’=’吗? 像这样: 是否允许?如果确实允许,我在哪里可以知道允许? 到目前为止,它似乎仍然有效,但我不太确定它以后是否会失效。 问题答案: 您可以在和之前放置反斜杠转义字符。 或者最好使用下面的代码来打印出如何 转义 您的财产: 输出: 另外,请查看Java API信息

  • 问题内容: 我已经阅读了Java和C++之间的枚举差异问题?但是我还是很困惑。 我想以下返回相关的字符串: 据我所读,这应该是可能的。只是希望您对如何实现它有所了解。 问题答案: 简短答案 您需要一个构造函数,一个字段和一个吸气剂。 建设者 枚举类型可以具有构造函数,只要它们的访问级别为私有或默认(包私有)即可。除了枚举声明本身之外,您不能直接调用这些构造函数。与类相似,当定义不带参数的枚举常量时

  • 问题内容: 我在程序中需要一个配置文件来存储一些信息,我看到了一些属性文件的示例,并试图使用它们,但是每当在NetBeans上尝试第二行时,我都会得到“ Package sortConfig不存在”,“ >预期”和“类型非法开始”。 问题是我已经看到大约10个示例都以相同的方式执行此操作,而我不知道发生了什么。 任何帮助,将不胜感激 我的.java类和我的属性文件位于src的同一包文件夹中 问题答

  • 问题内容: 我有以下代码尝试读取属性文件: 我在最后一行有一个例外。特别: 问题答案: 根据你的异常,该值为null,这意味着类加载器未找到你的属性文件。我猜测myProp.properties位于项目的根目录中,如果是这种情况,则需要前面的斜杠:

  • 问题内容: 在属性方面,我是一个新手,我读到XML是存储这些属性的首选方法。但是我注意到,以 也可以。这意味着更少的打字(也许更容易阅读,也更有效)。那么使用XML文件有什么好处? 问题答案: 在XML中,您可以存储比属性文件中更复杂的数据(例如,层次结构)。因此,这取决于您的用例。如果您只想存储少量直接属性,则更容易处理属性文件(尽管Java属性类也可以读取基于XML的属性)。 无论如何,保持配