gpt4 book ai didi

java - 您可以通过公共(public)嵌套接口(interface)访问私有(private)[静态]嵌套类吗?

转载 作者:行者123 更新时间:2023-12-02 07:42:44 25 4
gpt4 key购买 nike

好的,这是设置:

EnclosingClass {

public interface ClassFactory {
public static SomeClass getInstance(int which);
}

private static ClassFactoryImpl {
@Override
public static SomeClass getInstance(int which) {
switch(which) {
case 1:
return new SomeClassSubclassA();
case 2:
return new SomeClassSubclassB();
...
}
}
}
}

我希望能够发表以下声明:

SomeClass x = EnclosingClass.ClassFactory.getInstance(instanceClassRequest);

这可能吗?如果没有,我如何仅通过静态嵌套类实现的接口(interface)来访问它?

最佳答案

简短的回答是“不”。您需要创建一个实现类的实例并将其放入静态变量中。它看起来像这样:

public class EnclosingClass {
public interface ClassFactory {
public SomeClass getInstance(int which);
}
public static final ClassFactory CLASS_FACTORY;

private static class ClassFactoryImpl implements ClassFactory {
public SomeClass getInstance(int which) { /* ... */ }
}

static {
CLASS_FACTORY = new ClassFactoryImpl();
}
}

另请注意,实例上的方法不再是静态的。

然后调用它的代码将如下所示:

SomeClass x = EnclosingClass.CLASS_FACTORY.getInstance(2);

关于java - 您可以通过公共(public)嵌套接口(interface)访问私有(private)[静态]嵌套类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11369165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com