【问题标题】:The Error "No Closing Instance..." [duplicate]错误“没有关闭实例...” [重复]
【发布时间】:2014-06-09 21:40:06
【问题描述】:

我是 Java 新手,最近我研究 classobject 主题。但是,我无法处理此代码:

public class ClassStudy {

// Student Group
class Student {

    public String name = null;
    public String surname = null;

    boolean study(boolean does) {
        // He studies.
        boolean d = does;
        return d;
    }
    boolean slackOff(boolean does) {
        // He slacks off.
        boolean d = does;
        return d;
    }
}

// Teacher Group
class Teacher {

    public String name = null;
    public String surname = null;

    boolean teach(boolean does) {
        // He teaches.
        boolean d = does;
        return d;
    }
    boolean learn(boolean does) {
        // He learns.
        boolean d = does;
        return d;
    }
}

// Main Method
public static void main(String[] args) {
    Student student = new Student();
    Teacher teacher = new Teacher();
}

}

在 main 方法中,我得到了 student 的错误,但没有得到 teacher 的错误。我不知道我是否做错了什么或者我看不到它。必须做什么?

我得到的错误:

  • 没有使用局部变量student的值
    • 无法访问 ClassStudy 类型的封闭实例。必须 使用 ClassStudy 类型的封闭实例限定分配 (例如 x.new A() 其中 x 是 ClassStudy 的一个实例)。
    • 行断点:ClassStudy [line: 44] - main(String[])

【问题讨论】:

  • 如果您是 Java 新手,我强烈建议您一开始就不要使用嵌套类。

标签: java eclipse class object methods


【解决方案1】:

要么将Student(和Teacher)类设为静态,要么将其设为顶级类

static class Student {
   ...
}

【讨论】:

  • 谢谢,这对我很有效。 :)
  • 那些应该是真正的顶级类,除非你有充分的理由将它们设为公共静态内部类。 -- 编辑 -- 刚刚看到他们不公开,所以我会保留我的判断,哈哈。 O.O
【解决方案2】:

错误已经说明了问题:

无法访问 ClassStudy 类型的封闭实例。必须符合条件 具有 ClassStudy 类型的封闭实例的分配(例如 x.new A() 其中 x 是 ClassStudy 的一个实例。

如果没有内部类的实例,就不能创建内部类的实例,除非它们是静态的。 那么你需要将你的主要方法更改为:

// Main Method
public static void main(String[] args) {
    ClassStudy classStudy = new ClassStudy();
    Student student = classStudy.new Student();
    Teacher teacher = classStudy.new Teacher();
}

在初始化 Teacher 的那一行没有出现同样错误的原因是编译器在它发现的第一个错误处停止编译。

【讨论】:

    【解决方案3】:

    Reimeus 有一个正确的解决方案。要了解消息告诉您的内容,您应该阅读静态和非静态内部类是什么。这些应该可以帮助您入门。

    http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

    Java inner class and static nested class

    【讨论】:

      猜你喜欢
      • 2016-06-04
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2013-04-09
      相关资源
      最近更新 更多