工厂内部阶级,不可能吗?

异想天开的

我想从我的外部类中隐藏我内部类的实例化细节。我的内部类必须是非静态的,以便访问外部的变量

如果我尝试编写一个buildNew()静态方法,它会引发错误,因为似乎无法在内部类中使用静态方法。

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

米莎

我认为您概述的两个选项(将Inner静态化或将这些工厂方法置于Outer中)很好,并且通过进行以下操作并不会带来太大收益,但这是一个观点。

您可以通过让一个单例对象(相对于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;
        }
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

angularjs工厂内部功能不是工厂依赖吗?

来自分类Dev

角度工厂内部的调用函数

来自分类Dev

Kotlin工厂内部嵌套课程

来自分类Dev

工厂内部的AngularJS依赖注入

来自分类Dev

模型工厂内部的依赖注入

来自分类Dev

在角度工厂内部使用角度变量

来自分类Dev

这个查询COUNT是不可能的吗?

来自分类Dev

标签页的返回不可能吗?

来自分类Dev

拦截文件流...不可能吗?

来自分类Dev

是否不可能获得Traversable内部元素的深度?

来自分类Dev

$ scope和setPristine()在工厂内部不起作用

来自分类Dev

Angular.js在服务/工厂内部获取输入数据

来自分类Dev

了解“不可能”

来自分类Dev

不可能的NullPointerException

来自分类Dev

openlayers:使用MVT VectorTileSource进行群集不可能吗?

来自分类Dev

Node.js中的无限循环是不可能的吗?

来自分类Java

Java通用List参数不可能吗?

来自分类Dev

不可能对懒惰的财产设定期望吗?

来自分类Dev

在C#泛型中这是不可能的吗?

来自分类Dev

在SingleChildScrollView内没有ListView是不可能的吗?

来自分类Dev

在React Native中运行mount()不可能吗?

来自分类Dev

将NSFont转换为CGFont-不可能吗?

来自分类Dev

没有参数的步骤定义不可能吗?

来自分类Java

带有ArrayList的NullPointerException-应该不可能吗?

来自分类Python

减少Python中的循环是不可能的吗?

来自分类Java

从JVM的角度来看,从原始数组继承是不可能的吗?

来自分类Dev

同时运行多个AsyncTasks-不可能吗?

来自分类Java

JSTL c:forEach,增量数循环不可能吗?

来自分类Dev

模仿“如果constexpr”行为,不可能吗?