gpt4 book ai didi

java - 内部类中的工厂,不可能吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:20:58 26 4
gpt4 key购买 nike

我想对外部类隐藏内部类的实例化细节。我的内部类需要是非静态的才能访问外部的变量

如果我尝试编写一个 buildNew() 静态方法,它会抛出一个错误,因为内部类中似乎不可能有静态方法。

我是否必须放弃该功能并在父类中实例化内部类,或者将所有父类的变量传递给内部类才能获得静态资格?

最佳答案

我认为您概述的两个选项(使内部静态化或将这些工厂方法放在外部)都很好,您不会通过以下方式获得太多 yield ,但这是一个见仁见智的问题。

您可以通过使用单例(相对于 Outer 实例)对象来保存静态方法和变量的功能。在这种情况下,它看起来像这样:

class Outer {

int foo = 0;
int bar = 5;

private final InnerFactory innerFactory = new InnerFactory();

List<Inner> test() {
Inner fromFoo = innerFactory.newFromFoo();
Inner fromBar = innerFactory.newFromBar();

return Arrays.asList(fromFoo, fromBar);
}

private class InnerFactory {

Inner newFromFoo() {
// I'm an inner class, so I can access member variables
// of enclosing Outer
return new Inner(foo);
}

Inner newFromBar() {
return new Inner(bar);
}
}

public class Inner {

int baz;

Inner(int baz) {
this.baz = baz;
}
}

}

关于java - 内部类中的工厂,不可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29267874/

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