2012-09-02 116 views
0

是否可以實現一個接口來選擇多個通用參數?例如,如果我有一個接口實現不同泛型的接口?

public interface MyInterface<T> { 
    T doSomething(T); 
} 

然後一個實現它的類用於多選T?例如

public class MyClass implements MyInterface<SomeClass>, MyInterface<SomeOtherClass> { 
    SomeClass doSomething(SomeClass T) { 
     //here the implementation 
    } 

    SomeOtherClass doSomething(SomeOtherClass T) { 
     //here the implementation 
    } 
} 

上述不起作用,所以如何在Java中正確地完成這項工作?

+1

不,你不能這樣做。 – oldrinb

+5

不,因爲類型擦除。 – SLaks

回答

1

我不認爲有辦法讓這個工作,因爲有很多很好的理由,爲什麼它不應該工作,但取決於你的用例是什麼,可能有辦法解決它。例如:

public class MyClass implements MyInterface<Object> { 

    Object doSomething(Object T) { 
     if (T instanceof SomeClass) { 
      doSomethingSomeClass((SomeClass)T); 
     } else if (T instanceof SomeOtherClass) { 
      doSomethingSomeOtherClass((SomeOtherClass)T) { 
     } else { 
      // handle other objects - return null? throw exception? 
     } 
    } 

    SomeClass doSomethingSomeClass(SomeClass T) { 
     //here the implementation 
    } 

    SomeOtherClass doSomethingSomeOtherClass(SomeOtherClass T) { 
     //here the implementation 
    } 
} 

,並記住,你可以使用<? super SomeClass><? extends SomeClass>有時也可以像這樣的問題有所幫助。

相關問題