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中应该如何正确完成呢?

4

1 回答 1

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>有时也可以帮助解决此类问题。

于 2012-09-02T05:28:55.300 回答