我不确定为什么这段代码没有编译,它需要一个非静态变量[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我不确定为什么这段代码没有编译,它需要一个非静态变量[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

class TheAnimal {

    public class Animal {
        void bark(){
            System.out.println("Woof-Woof");
        }

    }

    public static void main(String[] args){
         Animal dog = new Animal();
         dog.bark();
    }

}

//继续说第12行动物狗=新动物();在编译之后它是一个非静态变量并且它不能从静态上下文中引用。

答案

您创建了一个内部类Animal,它只能在外部类实例上下文中实例化(这可能不是您现在想要/需要的)。将你的内部类声明为static将让你按照你的想法实现它:

class TheAnimal {   
    static public class Animal {
        void bark(){
            System.out.println("Woof-Woof");
        }   
    }

    public static void main(String[] args){
         Animal dog = new Animal();
         dog.bark();
    }   
}
另一答案

你内在的类Animal需要一个TheAnimal的实例,使它成为static

public static class Animal {
    void bark(){
        System.out.println("Woof-Woof");
    }
} 

或者,你需要TheAnimal中的main实例。喜欢,

public static void main(String[] args) {
    Animal dog = new TheAnimal().new Animal();
    dog.bark();
}

以上是关于我不确定为什么这段代码没有编译,它需要一个非静态变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Elm 编译器永远运行,计算机刚刚变热

为啥这段代码变慢了?

有没有办法确定使用哪个版本的 Visual Studio 来编译静态库?

检查函数指针的属性?

为啥允许静态方法调用私有方法?

为啥一个类允许拥有自己的静态成员,而不是非静态成员?