Java &引用;无法从静态上下文引用非静态方法makeHands();这意味着什么?我如何避免?

Java &引用;无法从静态上下文引用非静态方法makeHands();这意味着什么?我如何避免?,java,static,Java,Static,当我试着运行这个程序时,我得到了上面引用的错误。使makeHands静态只会导致灾难,而使main非静态则没有任何作用。我该怎么办 为了节省空间,代码位于该链接处。按如下方式编写主要方法: public static void main(String[] args) { new Main().new Deck().makeHands(); } 这个解释有点复杂,但我会尽量说得更清楚 基本上Deck是主类的内部类。内部类的一个特性(如果它们不像本例中那样是静态的)是,没有外部类的实例,

当我试着运行这个程序时,我得到了上面引用的错误。使makeHands静态只会导致灾难,而使main非静态则没有任何作用。我该怎么办


为了节省空间,代码位于该链接处。

按如下方式编写主要方法:

public static void main(String[] args) {
    new Main().new Deck().makeHands();
}
这个解释有点复杂,但我会尽量说得更清楚

基本上
Deck
主类的
内部类。内部类的一个特性(如果它们不像本例中那样是静态的)是,没有外部类的实例,实例就不可能存在。基本上,
Deck
的每个实例都需要引用
Main
类的实例,如果没有可用的
Main
实例,则无法创建
Deck
实例

我在上面粘贴的语法将确保正确的实例存在:首先它将创建一个主实例,然后它将创建一个指向之前创建的主实例的Deck实例。最后,它将调用非静态方法
makeHands()


这里有更全面的解释:

除非您绝对需要它,否则请回头看看为什么需要使用静态变量。仅从静态上下文中使用静态变量的限制是有原因的


如果绝对有必要执行此操作,请在非静态函数中实例化该类的新对象并执行所需操作。

更正。。。只是想补充一下。。。。发布的代码试图使用
Deck.makeHands()
。不能使用类引用调用实例(非静态)方法。该方法需要在类的对象上运行。。。因此,正如Toader提到的,需要新的甲板()等