0

クラスのジェネリックTypeのスーパータイプのみを受け入れることは可能ですか?

私が探しているのは次のようなものです。

class <T extends Object> MyClass {

    public <TS super T> void myMethod(TS someObjectSuperToTheClass) {
         //do stuff
    }

}

私はもうそれを本当に必要としません(そしてそれはおそらく最初からそれほど有用ではありません)が、これが可能であるかどうか、そしてそうでない場合はなぜか興味があります。

4

2 に答える 2

6

この場合の意味を考えてください。

、またはそのスーパークラスのTSいずれかであると断言します。Tただし、TSは単なる参照であるため、実際のsomeObjectSuperToTheClassパラメータはTSまたはサブクラスにすることができます。

両方の半分を組み合わせると、コードは完全に同等であることがわかります

public void myMethod(Object someObjectSuperToTheClass) { //do stuff }

一緒にするとTS、クラス階層を必要なだけ上に移動でき、パラメーターは必要なだけ下に移動できるためです。

この構文で、パラメーターを何に制約しようとしていましたか?

于 2009-11-16T16:12:10.587 に答える
3

いいえ、あなたがすることはできません!ワイルドカードのみがsuperバインドできます。

于 2009-11-16T16:01:44.990 に答える