天天看點

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

...

}