2017-07-27 7 views
1

は私が書いた:ジェネリックunmodifiableList

this.array = (X[]) Array.newInstance(init.getClass(), size); 

// ... 

public List<X> get() {   
    return Collections.<X>unmodifiableList(this.array); 
} 

しかし、私はエラーを取得する:

unmodifiableList in Collections cannot be applied to (X[])

がどのように私は、一般的な変更不可能なリストを作成することができますか?

+0

'返しCollections.unmodifiableList(新しいArrayListを<>());あなたは意味@Lino' – Lino

+0

'Collections.emptyList()'? – shmosel

+0

@shmosel私が書いたコメントをもう一度読んだので、OPには空白の配列ではなく、配列があります。しかし、もし彼が空のリストを返そうとするならあなたのアプローチはより良い – Lino

答えて

1

あなたはこれを行うことができます。

public List<X> get() { 
    return Collections.unmodifiableList(Arrays.asList(this.array)); 
} 
+0

配列を受け入れるArrayListコンストラクタがないので、最初のオプションは機能しません。第二のものは正しいですが –

+0

クールで、それは2番目の答えと同じになっても完全に正しい答えです。 –

2

をあなたはこのようにそれを実行する必要があります。

public List<X> get() 
{ 
    List<X> modifiableList = Arrays.asList(this.array); 
    return Collections.unmodifiableList(modifiableList); 
}