4

如果以前有人问过这个问题,请原谅。我在网上搜索过,这里是 stack overflow

案子:

我被困在我的 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();
^

任何答复将不胜感激!无论我的意图是不可能的,还是我只是做错了什么。

祝你今天过得愉快!

4

4 回答 4

4

线

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

应该

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

outerObject没有middleObject字段。不幸的是,Java 允许使用变量表达式来限定静态变量,因此实际编译时会得到一些奇怪的代码。

如果您坚持 Java 命名约定,这可能会更清楚。

于 2013-04-22T12:39:49.580 回答
2

您的代码永远不会编译为:

public int variable = "8";

这条线应该是

public int variable = 8;

首先改变这一行。

于 2013-04-22T12:40:28.473 回答
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();
    }
}
于 2013-04-22T12:43:49.857 回答
0

请试试这个:

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

您还需要更改:

 public int variable = "8";

 public String variable = "8";
于 2013-04-22T12:49:10.533 回答