Java 初始化静态内部类
使用供应商API时,我需要在内部类上设置一些参数,但我遇到了一个异常: 类型OuterClass.InnerClass的非法封闭实例规范 在“oc.new InnerClass()”上 在阅读了内部类,特别是静态内部类之后,我可以使用以下方法对其进行实例化:Java 初始化静态内部类,java,oop,jakarta-ee,Java,Oop,Jakarta Ee,使用供应商API时,我需要在内部类上设置一些参数,但我遇到了一个异常: 类型OuterClass.InnerClass的非法封闭实例规范 在“oc.new InnerClass()”上 在阅读了内部类,特别是静态内部类之后,我可以使用以下方法对其进行实例化: OuterClass.InnerClass myInnerClass = new OuterClass.InnerClass(); myInnerClass.setName("John"); 我的问题是,我如何实现 MyParentCla
OuterClass.InnerClass myInnerClass = new OuterClass.InnerClass();
myInnerClass.setName("John");
我的问题是,我如何实现
MyParentClass parentClass=新的MyParentClass();
parentClass.setOuterClassObject(outerClassObject)
当我从未实例化OuterClass对象时
基本上,我想在MyParentClass上设置一个填充的outerClass(带有innerClass变量)。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。)
无法访问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();
}
}
静态内部类没有任何外部类对象。这就是所谓的静态。我不太明白你想要实现什么。
public class OuterClass
{
private class NonStaticInnerClass
{
public bar() { foo(); };
}
private static class StaticInnerClass
{
public bar() { foo(); }; // Compiler error!!!
}
private void foo() {} ;
}
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();
}
}