如何实例化静态嵌套类的内部类?

时间:2015-11-04 01:06:00

标签: java class

这是我的班级

public class XYZ{

    public static void main(String[] args) {
        int n = 5;
        Object myObject;
       //somehow call returnN(n);
    } //end main

    static class Inner{
        private class Private{
            private int returnN(int n){
                return n;
            }
        }
    }//end of Inner


}

我试图从main调用returnN。我试过了myObject = new XYZ.Inner.Private();,但这似乎不是正确的实例化。

2 个答案:

答案 0 :(得分:2)

Private不是static。因此,在创建Inner之前,您需要Private的实例。正确的语法是

new XYZ.Inner().new Private().returnN(3);

或者,您可以Private static,然后就可以

new XYZ.Inner.Private().returnN(3);

答案 1 :(得分:0)

肖恩:为什么在阿兰努力回答之后你删除了recent question?我会在这里发布,以便它至少有互联网存在,但你应该重新打开它,并向Alain的答案进行投票,至少是他为回答它所付出的努力。

问题

我应该实现一个类,当我有这样的行:

double v = className.functionName().main(a,b);

className.output.display(v);

我不清楚这个层次结构在className类中应该是什么样子。

从函数调用中调用main()是什么意思?从函数调用main函数?为什么这可能只是functionName(a,b)?

使用.output的意义。这应该是一个带有子功能显示()的空白吗?

阿兰的回答

通过Alain O'Dea

回答

输出是一个字段。没有子函数或方法这样的东西,只有对象的方法。 display()方法位于 classname 对象的对象字段中。

这里的 main()方法只是 functionName()返回的对象的一个​​方法。被称为 main()没有特殊含义。

我会从给出的行中推断出类似的东西:

我将假设 className ClassName 的实例,如下所示:

public class Main {
    public static void main(String[] args) {
        ClassName className = new ClassName();
        Object a = new Object(); // replace with correct a
        Object b = new Object(); // replace with correct b
        double v = className.functionName().main(a,b);
        className.output.display(v);
    }
}

ClassName定义如下:

public class ClassName {
    public Output output = new Output;
    public Mainable functionName() {
        return new Mainable();
    }
}

Output.java:

public class Output {
    public void display(double v) {
        // implement display here
    }
}

Mainable.java:

public class Mainable {
    public double main(Object a, Object b) {
        return 0.0d; // put actual impl here
    }
}