是否可以为其通用参数的多种选择实现接口?例如,如果我有一个接口
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中正确完成?
答案 0 :(得分: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>
来帮助解决此类问题。