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

问题描述 投票:-1回答:2

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

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行动物狗=新动物();在编译之后它是一个非静态变量并且它不能从静态上下文中引用。

java class static main void
2个回答
0
投票

您创建了一个内部类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();
    }   
}

0
投票

你内在的类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();
}
© www.soinside.com 2019 - 2024. All rights reserved.