1

有没有办法在 Java 中定义独立的内部类?

注意:我不需要像 C# 中的“部分”类,我需要完整的类,而是内部类。

有没有计划在未来的 Java 中引入这种语法?

package tests.java;

public class Try_InnerClassStandalone_01 {

    public static void main(String[] args) {

        Outer O1 = new Outer(12);
        Outer O2 = new Outer(13);

        Outer.Inner i1 = O1.new Inner();
        System.out.println(i1.getData());

        InnerExt i2 = O1.new InnerExt();
        System.out.println(i2.getData());

    }
}

class Outer {

    class Inner {
        int getData() {
            return data;
        }
    }

    public int data;

    public Outer(int data) {
        this.data = data;
    }
}

class InnerExt extends Outer.Inner {

}

更新

我知道静态和非静态内部类有什么区别。我想利用优势,避免劣势。

优点是能够Outer.this隐式引用(更短的代码)。

缺点是必须将内部类放入外部类定义的边界(没有模块化)。

4

2 回答 2

1

尝试这个:

class Outer {
    static class Inner {
        // ...
    }
}

非静态内部类的实例具有对其封闭类实例的隐式引用。如果你想要我怀疑你对“独立内部类”的意思,你应该制作内部类static

于 2013-10-01T13:54:03.440 回答
1

你不能这样做

class InnerExt extends Outer.Inner {

}

因为Inner仅在Outer实例的上下文中相关。您不能将其扩展到Outer. 就像你可以做的那样

class Outer {
    class Inner {

    }
    class InnerExt extends Inner {

    }
}

否则你需要Inner上课static。然后,您可以在其可见性范围内扩展它。

于 2013-10-01T13:56:18.857 回答