我很难决定何时让我的方法保持静态。我被告知要创建一个全局LinkedList变量:
public static LinkedList list = new LinkedList();
现在,我编写了一个名为read()
的方法来读取文本文件中的单词。然后我写了另一个方法preprocessWord(word)
来检查这些单词是否以常量开头,将它们改为小写。如果他们有这些条件,那么我将它们添加到LinkedList列表:
public void read(){
....
while((nextLine = inFile.readLine())!= null){
tokens = nextLine.trim().split("\\s+");
for(int i = 0; i < tokens.length; i++){
word = tokens[i];
word = preprocessWord(word);
list.append(word);}
}
}
...
}//read
但是,当我尝试从main方法调用read()
时;
public static void main(String[] args) {
read();
System.out.println(list);
}//main
错误是我无法对非静态方法read()
进行静态引用,因此我尝试将方法read()
和preprocessedWord()
更改为静态方法,但随后{{ 1}}在words
中没有像他们想象的那样更新。我真的不知道在哪里使用静电,在哪里没有,有人可以解释我的想法在哪里出错吗?
答案 0 :(得分:0)
public static void main(String[] args) {
new YourClassName().read();
System.out.println(list);
}
然而,这样做意味着在您的read方法中,您必须以
的形式访问静态列表YourClassName.list.append(word)
另一种方法是使read也是静态的,所以在这种情况下你的方法签名应该是
public static void read()
答案 1 :(得分:0)
因为你的read
方法不是静态的。除非你需要,否则不要使用satic字段。用于在同一类的所有对象之间共享引用。使列表非静态或甚至本地,并作为参数传递给后续方法调用