如何在Java中定义常量列表?

时间:2013-03-31 15:30:09

标签: java design-patterns constants

当我们想要像pi一样定义一个常量时,我​​们可以像public static final float pi = 3.14那样做。但是,我想说我想要一个在扫描一个也发生变化的文件后产生的停用词列表。我还可以进行“懒惰”初始化吗?你会怎么做?

2 个答案:

答案 0 :(得分:2)

您可以使用静态嵌套类初始化常量。

此优点:即使您已经使用了包装类,只有在使用它时才会加载此静态嵌套类

您只需在嵌套类的构造函数中“扫描”包含停用词的文件,并将它们分配给常量变量,这些变量本身包含在嵌套类中。

注意:在处理扫描某些文件等“复杂”代码时,我讨厌使用静态初始化程序。这会掩盖潜在抛出的异常(在开发过程中),因为ExceptionInInitializerError会是反而是......令人讨厌;)http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ExceptionInInitializerError.html

答案 1 :(得分:2)

您描述的模式与Java常量变量不匹配。你的常数就是数据。

您可以使用地图(HashMap<String>)并使用高频词的值对其进行初始化。
然后,当您从文件/文本/扫描仪中读取单词时,您可以检查该单词是否在地图中并决定该怎么做。