2012-01-16 10 views
3

C#のJava 1.5〜Enumerable.Cast()に相当するものはありますか? List<Object>と宣言された変数にArrayList<MyType>を割り当てたいとします。 Eclipseが "Type Mismatch:ArrayList<MyType>からList<Object>に変換できません"と不平を言う。私はちょうどListArrayListジェネリックスなしで使用していたが、コンパイラはそれについて警告し、私はいくつかの警告をクリーンアップしたかった。Java - Enumerable.Cast()はC#のようですか?

答えて

7

に行く場合は、をリストに追加することは危険です。しかし、あなたが唯一のしたい場合に使用することができ、リストからをフェッチ:

Enumerable.Cast
ArrayList<MyType> specificList = new ArrayList<MyType>(); 
List<? extends Object> generalList = specificList; 

それとも近いほどIterableを使用することです:

Iterable<? extends Object> generalIterable = specificList; 

それはあなたも指定する必要があることを恥ですIterableが「読み取り専用」のインターフェイスであることを考えれば、ここでのワイルドカード(私はあなたがしたことに驚いていた)です。

Javaジェネリックの詳細については、Java Generics FAQを参照してください。

+0

ありがとうございます!いくつかのリターンとパラメータの型を '<? ''の代わりにObject> 'を拡張しました。 –

+0

@SarahVessels:パラメータ型にワイルドカードを使用するのは問題ありませんが、可能な場合はリターン型で使用することは避けてみたいと考えています。 – ColinD

+0

@ColinD:戻り値の型がインターフェイスを共有すると期待しているクラスを更新するかもしれないので、戻り値の型はList です。 –

関連する問題