這是現有的接口:一個接口有兩個類型參數。我可以使用兩種類型的接口來實現接口嗎,這樣它們就可以兼容了嗎?
public interface MyInterface<T, U> {
public T foo(U u);
}
我要實現的假設,即T和U是同一類型下的這個接口。我想也許我可以離開,因爲他們是類型參數,然後只要我只實例化這個特定的實現有兩個同一類型的,它可能工作:
public class MyOuterClass<A> {
public class MyClass<T, U> implements MyInterface<T, U> {
@Override
public T foo(U u) {
return u; //error here
}
//even though in the only instantiation of MyClass, T and U are the same
private MyClass<A, A> myInstance = new MyClass<A, A>();
}
但是,也許並不奇怪,這不起作用,因爲類型T和U不兼容。
所以我想也許我可以改變MyClass來指定它的類型總是相同的,通過改變它類似MyClass<A, A> implements MyInterface<A, A>
或類似的東西,但我得到的錯誤說T已經定義。
有沒有辦法實現MyClass,使它的兩種類型是相同的?
(我更多的是C++的傢伙比Java的,很抱歉,如果我錯過了Java的泛型東西在這裏根本。)
您正在使用兩種不同類型的參數;編譯器無法弄清楚你的意圖,因爲如果它們的目的是爲相同的類型,你應該說'MyClass'而不是'MyClass '。 –
2013-04-08 16:34:27