使用供应商API,我需要在内部类上设置一些参数,但我得到了异常: 非正式的OuterClass.InnerClass类型的实例规范 在“ oc.new InnerClass()”
OuterClass oc = new OuterClass();
OuterClass.InnerClass rc2 = oc.new InnerClass();
在读取内部类,特别是静态内部类之后,我可以使用:
实例化它OuterClass.InnerClass myInnerClass = new OuterClass.InnerClass();
myInnerClass.setName("John");
我的问题是,我如何实现
MyParentClass parentClass = new MyParentClass();
parentClass.setOuterClassObject(outerClassObject)
当我从未实例化过OuterClass对象时。
基本上我想在MyParentClass上设置一个填充的outerClass(带有innerClass变量)。
答案 0 :(得分:0)
InnerClass的范围是OuterClass。所以你可以在OuterClass的方法里面访问它。在这种情况下,只需从任何其他类创建类的实例。
public class OuterClass
{
class InnerClass
{
public InnerClass() { super(); };
public bar() {};
}
private void foo()
{
InnerClass aic = new InnerClass();
aic.bar();
}
}
嵌套类是其封闭类的成员。非静态嵌套类(内部类)可以访问封闭类的其他成员,即使它们被声明为私有。静态嵌套类无权访问封闭类的其他成员。作为OuterClass的成员,可以将嵌套类声明为private,public,protected或package private。 (回想一下外部类只能声明为public或package private。)
public class OuterClass
{
private class NonStaticInnerClass
{
public bar() { foo(); };
}
private static class StaticInnerClass
{
public bar() { foo(); }; // Compiler error!!!
}
private void foo() {} ;
}
无法访问OuterClass之外的InnerClass(未定义),但您可以将其作为接口访问:
public interface IInterface
{
public void bar();
}
public class OuterClass
{
class InnerClass implemets IInterface
{
public InnerClass() { super(); };
public void bar();
}
private InnerClass ic;
public IInterface getIInterface() { return ic; };
}
public class AnotherClass
{
private OuterClass oc;
public foo()
{
IInterface iI = oc.getIInterface();
iI.bar();
}
}