用不同的泛型实现接口?

时间:2012-09-02 02:34:19

标签: java

是否可以为其通用参数的多种选择实现接口?例如,如果我有一个接口

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 个答案:

答案 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>来帮助解决此类问题。