繁体   English   中英

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

[英]How do you instantiate an inner class of a static nested 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(); 但这似乎不是正确的实例。

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

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

另外,您可以将Private static ,然后就可以

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

肖恩(Sean):在阿兰(Alain)努力回答后,您为什么删除最近的问题 我将其张贴在这里,以便至少在Internet上存在,但您应该重新打开它,并投票赞成Alain的回答,至少是出于他在回答问题上的努力。


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

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

className.output.display(v);

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

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

和使用.output的重点。 子函数display()是否应该将其无效?


阿兰的答案

Alain O'Dea的回答

输出是一个字段。 没有子功能或方法,只有对象上的方法。 display()方法位于类名对象的对象字段上。

这里的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
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM