型Tまたはタイプのリストを持つことができるジェネリッククラスを定義するために私のJavaのジェネリックは離れて長い時間が経過した後のJavaに戻っさびです。 どのよう<T>
は、私は私が午前問題は、時にはTがクラスのインスタンスであるということであるObjectMapper
abstract class MyBaseClass<T> {
private Class<T> clazz;
public void read() {
objectMapper.readValue(json, clazz)
}
abstract Class<T> getGenericTypeClass();
}
ジャクソンズをラップするために、一般的な基本クラスを作成しようとしています、そして時にはそれがList<T>
にする必要があります。私のコードは前者のために働いていますが、リストのシナリオがあるときにコンパイルすることはできません。したがって、この
class Sub extends MyBaseClass<Thing> {
@Override
getGenericTypeClass() {
return Thing.class;
}
}
が正常に動作しますが、私はList<Thing>
を必要とするとき、私は少し迷ってしまいました。
'List'が必要な場合は、タイプトークン(http://stackoverflow.com/a/75345/2413303より)を検討する必要があります - 私はそれら[ここ]でhttp://stackoverflow.com/a/30096160/2413303)、それが助けになるかどうかわかりません。 –
EpicPandaForce
'Thing.class'がありますが、そこ'一覧 .class'のみ 'List.class'はありませんので、' 'の型情報が失われてしまいます。あなたが使っているこの外部ライブラリには、そのようなケースに対処するためのいくつかの他のAPIがあるかもしれません。この場合、実際にはライブラリに依存します。 –
しかし、[この記事](https://bthurley.wordpress.com/2012/07/18/accessing-generic-type-info-at-runtime/)とSpringの 'GenericTypeResolver'を見ることもできます – EpicPandaForce