2

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

4

2 回答 2

2

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

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

于 2013-03-31T17:55:47.570 回答
2

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

这样做的好处:这个静态嵌套类只有在你使用它时才会被加载,即使你已经使用了包装类。

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

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

于 2013-03-31T15:35:13.523 回答