Java 静态/非静态方法参考
我开始制作一个刽子手游戏。我想要一个主类和一个方法类。我想得到一个秘密单词,但我得到一个错误: 无法从静态上下文引用非静态方法Java 静态/非静态方法参考,java,static,Java,Static,我开始制作一个刽子手游戏。我想要一个主类和一个方法类。我想得到一个秘密单词,但我得到一个错误: 无法从静态上下文引用非静态方法getWord() 可能是因为没有创建对象而出现此错误?这里出了什么问题,我该如何解决 PS:也许用enum实现它会更好,但我想从这个角度开始 public class HangmanMain { public static void main(String[] args) { String secretWord; /* chosen secret
getWord()
可能是因为没有创建对象而出现此错误?这里出了什么问题,我该如何解决 PS:也许用enum实现它会更好,但我想从这个角度开始
public class HangmanMain {
public static void main(String[] args) {
String secretWord; /* chosen secret word*/
secretWord = HangmanUtil.getWord();
System.out.println("");
}
}
public class HangmanUtil {
private String[] wordBank = {"pool","ice", "america", "hook", "book", "glass" , "hint", "giraffe"," elephant", "ocean","market"};
String guess;
private int bodyPartsLeft;
String getWord(){
int len = wordBank.length;
int rand = (int)(Math.random() * (len + 1));
return wordBank[rand];
}
}
你回答自己:
可能是因为没有创建对象而出现此错误 创建
HangmanUtil
的新实例,或者将HangmanUtil.getWord()方法设置为静态
EDIT:考虑到它是一个实用类,我认为第二个选项更好:使HangmanUtil
成为一个带有静态方法的静态类 除非方法是静态的,否则不能通过ClassName.methodName()
调用方法
如果要调用非静态方法,则需要一个实例。例如
HangmanUtil hu = new HangmanUtil();
secretWord = hu.getWord();
如果您不想创建实例,那么您的方法需要标记为“静态”
,并且它引用的任何其他方法或字段也必须是静态的。“可能是因为没有创建对象而出现此错误?”-这完全正确。您需要先实例化包含类,然后才能调用它的一个非静态方法。谢谢:)。“private static String[]wordBank=…,”和“static String getWord(){…”解决了这个问题(并创建了一个新实例)。“public static class HangmanUtil{”不编译。是的,一个类不能被标记为static
,只能标记其内容。你还可以使构造函数private
完全使该类成为“static”。