2017-04-09 4 views
1

これは、何が間違っていて正しいのかを知るためのコードです。生と一般リスト

public class JavaApplication5 { 


public static void main(String[] args) { 

    List l=new ArrayList<String>();//Line 1 

    List<Object> x=new ArrayList<String>();//Line 2 


} 

} 

上記の1行は問題なく動作していますが、2行目でコンパイルエラーが発生します。なぜか教えてくれますか?

ListList<Object>は同等ですか?両方とも間違っているか、どちらも正しいはずです。

+0

あなたはオブジェクトの左側のリストにさまざまなタイプを使用しています。右側にはストリングとしてインスタンス化しています。 – wedo

+0

List のリストは、リストのサブクラスである可能性がありますか?なぜJavaのジェネリックは暗黙的に多相でないのですか?](http://stackoverflow.com/questions/2745265/is-listdog-a-subclass-of-listanimal-why-arent-javas-generics-implicitly-p) – QBrute

+0

リストとリストの違い

答えて

1

あなたは場所の両方で同じタイプを設定する必要があります。だから、あなたはあなたの問題を解決するためのオプションを持っている

List<Object> x = new ArrayList<String>(); 
//----^-------------------------^-------- 

一つは、あなたのArrayList

でいずれかのタイプを設定していません
List<Object> x = new ArrayList<>(); 

か、同じタイプ設定:

List<Object> x = new ArrayList<Object>(); 
//or 
List<String> x = new ArrayList<String>(); 
0

投稿されたオプションはありません。古い

List<String> x = new ArrayList<String>(); 

はまだ合法である、のような、しかし

List<String> x = new ArrayList<>(); 

からStringList(複数可)については、Java 7以来、あなたはダイヤモンド演算子を使用することができます。

あなたの最初のオプションはraw typeあり、そして2番目のオプションは、(それが合法であれば)Objectのいずれかのタイプ(だけでなく、String)を含めることができますListになります。

関連する問題