此代碼是非法的,因爲Bar不能使用通用T,因爲它屬於Foo,而Bar是靜態的。 :(有沒有辦法讓兩個類使用相同的泛型?
public interface Foo<T> {
public interface Bar {
public void bar(T t);
}
void foo(T t, Bar bar);
}
我的問題是,是否有一個合理的解決方法這個問題嗎?我真的需要Foo和酒吧中使用相同的通用類型,因爲酒吧是一個富監聽器類,需要返還相同種類。當然,我可以用兩個泛型(如Bar<P>
),並始終分配相同的類型T和P,但是這是時髦且容易出錯是否有一個清晰的解決方案
泛型類型參數僅適用於實例,而不是靜態的成員或類型。 – SLaks
在我看來,強制兩個實例使用相同類型參數的地方是當它們一起使用時。你有一個示例用例(帶代碼)嗎? –
不需要有一些類繼承Foo或Bar來使用它們中的任何一個嗎?另外,它是否有助於製作特定類型的Bar:'public interface Bar' –
mbomb007