どのようにリスト<ロング>のBigInteger値を持っているのArrayListへの参照

イスマイルヤウス:

この方法は、JpaRepositoryで定義され、ネイティブのPostgreSQLのクエリを実行しています。

List<Long> distributorIds = distributorRepository
.findDistributorIdsWithChildren(distributorId)

これは、例外なく実行され、実行時に私は戻っdistributorIdsのArrayList内のBigInteger値の代わりに、長い値を参照してください

これは、この質問と同じです:春データJPAでのバグ:春データ一覧<BigIntegerの>を返す代わりに、リストの<ロング>

だから、どのようにこのバグが発生する可能性がありますか?私は意味JAVAがこれを可能にする方法Javaは型エラーのこの種をチェックしない場合は、JAVAでのジェネリック医薬品の問題ではありません。

注:私はまた、ロングとBigIntegerのための型階層をチェックし、何のサブ/スーパークラスの関係はありません。

ラルフ:

ジェネリック型チェックは、コンパイル時の機能です。実行時には、すべての種類の情報が失われます。「型消去」を参照してください。例えば、非ジェネリックコレクションを使用して、従来のAPIが使用するジェネリックとは、コレクションのキャストが必要であることをAPIにマップされている、かどうかを確認動作が簡単に発生することがあります。そのコレクションは、予想外のタイプのオブジェクトが含まれているために起こる場合は、悲しいことに、実行時にのみ出ています。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=374866&siteId=1