当前位置:  开发笔记 > 编程语言 > 正文

在Java中隐藏"本地"类型参数

如何解决《在Java中隐藏"本地"类型参数》经验,为你挑选了1个好方法。



1> Tom Hawtin -..:

为了有用,在某些时候你将设置该foo字段.此时你应该知道(或能够捕捉)T.我建议在构造函数中执行此操作,然后Bar有一个泛型参数是有意义的.您甚至可以使用接口,因此客户端代码不必查看类型.但是,我认为你不会接受我的建议,真的想要一个setFoo.所以只需为可切换的实现添加一点:

/* pp */ class final BarImpl {
    private final Foo foo;
    private T t;

    BarImpl(Foo foo) {
        this.foo = foo;
    }

    public void startStuff() {
        t = foo.getOne();
    }

    public void finishStuff() {
        foo.useOne(t);
    }
}

public final class Bar {
    private BarImpl impl;

    /* ... */

    // Need to capture this wildcard, because constructors suck (pre-JDK7?).
    public void setFoo(Foo foo) {
        setFooImpl(foo);
    }
    private  void setFooImpl(Foo foo) {
        impl = new BarImpl(foo);
    }

    public void startStuff() {
        impl.startStuff();
    }

    public void finishStuff() {
        impl.finishStuff();
    }
}

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有