2

Java でパラメーター化されたジェネリック型を返すことができるメソッドについて質問があります。簡潔に説明できないかもしれないので、ご了承ください。次があるとします。

public class SomeClass<T extends AnotherType> extends SomeSuperClass<T>{
    private AnotherType member;        

    public SomeClass(AnotherType at){
       member = at;
    }

    public SomeSuperClass<xxx> foo(AnotherType bar){
       return new SomeSuperClass<xxx>(bar);
    }

}

したがって、この単純なファクトリのようなメソッド「foo」があります。返された新しいインスタンスのパラメーター化された型が「バー」オブジェクトの特定の型になることを表すために、「xxx」の代わりに何を入れることができますか? たとえば、bar がクラス Bar (AnotherType のサブクラス) の場合、次のインスタンスを返します。SomeSuperClass<Bar>(bar)

「?」を使用できることはわかっています。任意のタイプを表し、次のものを持ちます。

return new SomeSuperClass<?>(bar);

しかし、私は次のようにもっと具体的にしたいと思っていました:

return new SomeSuperClass<bar.class>(bar);

バーのタイプが SomeSuperClass 階層で上位にある場合、T を使用できませんか? また、just の使用もまたSomeClass<AnotherType>曖昧です。

この状況で使用する構文は何ですか?

4

1 に答える 1

5

これはどう?

public <U extends AnotherType> SomeSuperClass<U> foo(U bar){
    return new SomeSuperClass<U>(bar);
}
于 2012-11-01T22:48:46.577 に答える