如何从私有静态类访问方法

时间:2014-01-21 15:45:49

标签: java

我试图将所有停用词放在一个哈希集上,我不想一个一个地添加它,所以我试图放入一个txt文件并让我的扫描仪扫描它。问题是我认为我的代码没有到达我的扫描仪这里是我的代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;

public class StopWords  {

    public static final Set<String> stopWords = new HashSet<String>();   

    private static class scan {

        public scan()throws IOException {
            Scanner s = null;

            try{
                s = new Scanner(new BufferedReader(new FileReader("stopwords.txt")));

                while (s.hasNext()) {
                    //System.out.println(s.next());
                    stopWords.add(s.next());
                }
            }finally{
                if (s != null) {
                    s.close();
                }
            }        
        }
    }
}

我在其他类上运行我的主,我只是调用这个类。提前谢谢

2 个答案:

答案 0 :(得分:0)

在封闭类中为它创建一个包装器。 类似的东西:

public void doScan() {
    try {
         scan.scan();
    catch (IOException e) {};
}
在StopWords类中

这样你就可以在StopWords的实例上调用doScan()。你也可以把它变成静态的。

我同意你应该遵循Java语言的命名对话(wikipedia.org)。

答案 1 :(得分:0)

只想添加一些你可能会考虑的技巧:

  • 首先 - 您可以将停用词存储在属性文件中,然后使用java.util.Properties.load来提取数据。
  • 其次 - 你可以将你的停用词文件放在你的类路径中,然后将停用词文件与你的代码中的其余代码捆绑在一起以便传递。

你结束了这样的事情:

final Properties stopProps = new java.util.Properties();
stopProps.load( new InputStreamReader( this.class.getClassLoader().getResourceAsStream( "mycode/stopWords.properties", "UTF-8" ) );

...

祝你好运!