クラス情報を注入する必要があるため、Guice型リテラル組み込み注入を使用したいと思います。Guice:なぜTypeLiteral <T> getRawType()メソッドは、クラス<T>の代わりにクラス<? super T>を返しますか?
public class Foo<T> {
private Class<T> clazz;
@Inject
public Foo(TypeLiteral<T> literal) {
this.clazz = literal.getRawType();
}
}
それは完璧に働いているだろうが、getRawType()
方法はClass<? super T>
を返します。以下の例を参照してください。内部的にはclazz
変数が別のクラスのメソッドの引数として使用されています。 タイプをClass<? super T>
に変更した場合は、一連のクラスを再作成する必要があります。
ここで最も洗練されたソリューションは何ですか?次のように、未チェックとしてそれを持ってしまうかもしれませんがあなたが、その場合にはClass<T>
に生タイプをキャストすることができ
ええ、私はそれをキャストすることができます、どのように安全ですか?なぜそのメソッドはクラスを返さないのですか? –
@IhorM。理想的には、これは共有リンクの複製でなければなりません。それに投票する – nullpointer