2012-09-02 34 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>有时也可以像这样的问题有所帮助。