【问题标题】:"non-static variable cannot be initialized from a static context" java error [duplicate]“无法从静态上下文初始化非静态变量”java错误[重复]
【发布时间】:2018-05-31 09:17:06
【问题描述】:

我正在研究如何制作一个接受任何对象的参数,我找到了答案并尝试重新创建代码。但问题是每当我初始化 Bee、Horse 和 Apple 时,它​​总是显示错误“无法从静态上下文初始化非静态变量”。那么这是怎么回事呢?

public class Testing{
public static void main(String[]args){
  Bee a= new Bee();
  Horse b= new Horse();
  Apple c= new Apple():
}
private interface holder{
    public int getX();
}
private class Bee implements holder{
    int a=52;
    public int getX(){
        return a;
    }
}
private class Horse implements holder{
    int a=62;
    public int getX(){
        return a;
    }
}

【问题讨论】:

  • 您目前有内部类,需要外部类的实例来实例化。制作这些课程static
  • 既然您没有 Apple 课程,那么这首先应该如何工作?错误显示在哪一行?

标签: java


【解决方案1】:

只需将BeeHorse 的类定义从:

private class Bee implements Holder {...}

到:

private static class Bee implements Holder {...}

没有static 关键字,该类被视为内部类,需要实例化封闭类的实例。例如,如果没有static,你必须写:

Testing testing = new Testing();
Bee bee = testing.new Bee();

这没有意义,因为 TestingBee 并不真正相关。因此,使用 static 可以像您尝试的那样完成:

Bee bee = new Bee(); // works

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多