静态/非静态方法引用

时间:2015-10-16 14:11:34

标签: java static

我开始创建一个Hangman游戏。我想要一个主类和一个方法类。我想得到一个秘密的词,但我收到一个错误:

  

非静态方法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];
    }

}  

2 个答案:

答案 0 :(得分:0)

你自己回答:

  

也许我收到此错误,因为没有创建对象?

创建HangmanUtil的新实例或将HangmanUtil.getWord()方法设为静态。

编辑:考虑到它是一个实用工具类,我相信第二个选项更好:make HangmanUtil是一个静态类的静态类。

答案 1 :(得分:0)

除非方法是静态的,否则无法通过ClassName.methodName()调用方法。

如果要调用非静态方法,则需要一个实例。 E.g。

HangmanUtil hu = new HangmanUtil();
secretWord = hu.getWord();

如果您不想创建实例,则需要将您的方法标记为static,并且它引用的任何其他方法或字段也必须是静态的。