相关疑难解决方法(0)

Java - 不能访问类型为Foo的封闭实例

我有以下代码:

class Hello {
    class Thing {
        public int size;

        Thing() {
            size = 0;
        }
    }

    public static void main(String[] args) {
        Thing thing1 = new Thing();
        System.out.println("Hello, World!");
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道Thing什么都不做,但我的Hello,World程序在没有它的情况下编译得很好.这只是我定义的类失败了.

它拒绝编译.我开始No enclosing instance of type Hello is accessible."创造一个新的东西.我猜是:

  1. 我有系统级问题(在DrJava或我的Java安装中)或
  2. 我对如何在java中构建一个工作程序有一些基本的误解.

有任何想法吗?

java inner-classes

297
推荐指数
5
解决办法
23万
查看次数

用于实例化内部类的奇怪语法

我没想到在这个阶段我会在Java中遇到全新的语法,但是,我刚刚遇到了一些问题:

确切的上下文以及下面的代码应该做的事情是非常无关紧要的 - 它只是提供某种上下文.

我正在尝试综合在IT Mill Toolkit中创建一个事件,所以我写了这样一行:

buttonClick(new Button.ClickEvent(button));
Run Code Online (Sandbox Code Playgroud)

但是,Eclipse给出了以下错误消息:

不能访问类型为Button的封闭实例.必须使用Button类型的封闭实例限定分配(egxnew A(),其中x是Button的实例).

当我按如下方式重写上面的行时,它不会再抱怨了:

buttonClick(button.new ClickEvent(button)); // button instanceof Button
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是:后面的语法是什么意思,确切地说,为什么第一个片段不起作用?什么是Java抱怨,以及它在第二个版本中做了什么?

背景信息:无论ButtonButton.ClickEvent是非抽象公共类.

java constructor inner-classes

42
推荐指数
3
解决办法
2万
查看次数

标签 统计

inner-classes ×2

java ×2

constructor ×1