Java:内部类嵌套在内部类中

4

如果这个问题之前已经被提出,请谅解。

情况:

我在我的Java项目中卡住了,当我尝试在另一个内部类中使用内部类时,编译器无法编译我的项目。

代码:

public class outer  {
    public class middle {
        public class inner  {
            public int variable = "8";
        }
    }
}

声明:

我试图这样声明类:

outer outerObject = new outer();
outerObject.middle middleObject = outerObject.new middle();
outerObject.middleObject.inner innerObject = outerObject.middleObject.new inner();

编译结果:

source\start.java:8: error: cannot find symbol
                      outerObject.middleObject.inner innerObject = outerObject
.middleObject.new inner();
^

非常感谢您的回复!无论我的意图是否不可能或我是否做错了什么,都非常感激。
祝您有愉快的一天!

请查看此链接:https://dev59.com/GXVD5IYBdhLWcg3wJIIK?rq=1 - user2243194
4个回答

4

这条线

outerObject.middleObject.inner innerObject = outerObject.middleObject.new inner();

应该是

outer.middle.inner innerObject = middleObject.new inner();

outerObject没有一个名为middleObject的字段。不幸的是,Java允许静态变量与变量表达式限定,因此你可以得到一些奇怪的代码却能编译通过。

如果你坚持使用Java命名约定,这可能会更清晰明了。


谢谢!这解决了我的问题!我认为应该有一个教程来说明这个。可能已经有一些了,但我没有找到。 - Ole Kristian Møller-Hansen
指定内部类的外部 new 是一个非常模糊和毫无意义的功能,我认为它不值得成为教程的内容。 - Tom Hawtin - tackline
@OleKristianMøller-Hansen 可以将此标记为答案吗? - Novaterata

2

你的代码永远无法编译,因为:

public int variable = "8";

这行文字应该是:

这一行


public int variable = 8;

首先更改这一行。


0
使用这个。
public class outer  {
    public class middle {
        public class inner  {
            public int variable = 8;
        }
    }
    public static void main(String[] a) {
        outer outerObject = new outer();
        middle middleObject = outerObject.new middle();
        middle.inner innerObject = middleObject.new inner();
    }
}

0
请尝试这个:
    Outer outerObject = new Outer();
    Outer.middle middleObject = outerObject.new middle();
    Outer.middle.inner innerObject = middleObject.new inner();

还需要更改:

 public int variable = "8";

to

 public String variable = "8";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接