天天看点

java 隐藏参数_在Java中隐藏“本地”类型参数

假设我使用的是具有泛型类型参数的接口

interface Foo {

T getOne();

void useOne(T t);

}

目的是类型T是抽象的:它对Foo的实现强制执行类型约束,但客户端代码并不完全关心T是什么.

这在通用方法的上下文中没有问题:

public void doStuff(Foo foo) {

T t = foo.getOne();

foo.useOne(t);

}

但是假设我想要分解doStuff的工作,在类Bar中保存一些状态.在这种情况下,我似乎需要将Foo的类型参数添加到Bar.

public class Bar {

private Foo foo;

private T t;

public void startStuff() {

t = foo.getOne();

}

public void finishStuff() {

foo.useOne(t);

}

}

这有点奇怪,因为类型参数T没有出现在Bar的公共接口中(即,它不包含在任何方法参数或返回类型中).有没有办法“量化T”?即,我可以安排参数T隐藏在Bar的界面中,如下所示吗?

public class Bar {

{ // foo and t have to use the same T

private Foo foo;

private T t;

} // T is out of scope

...

}