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