java - Java 中的内部类 - 非静态变量错误

标签 java class inner-classes

我还是 Java 的新手,我尝试创建一个内部类并调用 main 中的方法。有一个编译错误说

Non static variable - This cannot be referenced from a static context

请帮忙

class Class1{

    public static void main(String args []){
        Class2 myObject = new Class2();
        myObject.newMethod();
    }

    public class Class2{
        public void newMethod(){
            System.out.println("Second class");
        }
    }
}

最佳答案

内部 类需要引用外部 类的实例才能构造。如果您的类在逻辑上不需要它,则使用 static 修饰符使其“只是一个嵌套类”:

public static class Class2 {
    public void newMethod(){
        System.out.println("Second class");
    }
}

编辑:要将 Class2 的实例创建为 inner 类,您可以使用如下内容:

Class1 outer = new Class1();
Class2 myObject = outer.new Class2();

或者更简单地说:

Class2 myObject = new Class1().new Class2();

...但是除非您真的想要对封闭实例的引用,否则将类设为嵌套类要简单得多。

关于java - Java 中的内部类 - 非静态变量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12913731/

相关文章:

java - 复数的指数形式

java - 使用具有 "old"对象引用的 Builder 模式创建新对象

java - 为什么没有将 WAR 文件导入 Eclipse 的选项?

java - 我如何将java中不同类的方法链接在一起?

python - 从类初始化器内部调用方法是Pythonic吗?

java - 当子类和父类都是内部类时,Java 中的继承行为

java - PHP 与 Java 执行

java - Android在Activity类中的调用方法

Java接口(interface)内部类

Javaparser 从内部/嵌套类定义中收集多个孤立且未附加的注释