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 に答える