2017-11-22 10 views
3

私はJavaのジェネリックスを理解しようとしています。Javaの一般的な誤解

private List<Own> l = new ArrayList<Own>(); 

私は次のエラーを持っている:私はT []期待方法(readTypedArray)に渡し

no instance of Typed array variable T exist so that List<Own> conform to T[] 

private List<Own> list = new ArrayList<Own>(); 

private OwnParceable(Parcel in) { 
    in.readTypedArray(list, CategoriesParceable.CREATOR); 
} 
+0

'List'は' [] 'ではありません。 –

答えて

1

これはジェネリックとは何の関係もありません - List Sと配列は、ちょうど2つの異なるものです。

Own[] arr = new Own[10]; // Or some size that makes sense... 
in.readTypedArray(arr, CategoriesParceable.CREATOR); 
3

配列T[]を期待していますが、配列でないList<Ownを通過したin.readTypedArray()方法:あなたの方法は、配列を期待している場合は、配列ではなく、リストにそれを渡す必要があります。

Listは、アレイが予想される場合、あなたがそれを使用できないarrayない、Listは、詳細についてはDifference between List and Arrayをチェックarrayは、Javaのデータ構造であるCollectionを拡張するインタフェースです。

あなたが代わりにList<Own>Own[]を宣言またはメソッドに渡す前に、配列にこのリストを変換することができますいずれか、Convert list to array in Javaチェック:

in.readTypedArray(list.toArray(new Own[list.size()]), CategoriesParceable.CREATOR); 
0

は、指定の内容で満たさ配列を作成する可能性がありますList。これを実現するには、リスト参照のメソッドtoArray()を呼び出すことができます。例えば、

Integer[] array = list.toArray(new Integer[list.size()]); 
関連する問題