2012-03-09 15 views
5

「LinkedListのは、ジェネリックではありませんか」?ここではプログラムは次のとおりです。は言うリンクリストを作成しようとすると、私はエラーを取得していますエラーのJava

import java.util.*; 

public class LinkedList { 
    public static void main(String[] args) { 
     List<String> list = new LinkedList<String>(); 
     Scanner input = new Scanner(System.in); 

     System.out.print("How many elements do you want to add: "); 
     int num = input.nextInt(); 

     for(int i = 0; i < num; i++) { 
      System.out.print("Add Element: "); 
      String element = input.next(); 
      list.add(element); 
     } 
     System.out.println(); 

     System.out.println("LinkedList elements are: "); 
     for(int i = 0; i < list.size(); i++) { 
      System.out.println(list.get(i)); 
     } 
    } 
} 
+2

何をしようとしていますか?作成しているLinkedListクラスは、コレクション内にJavaで構築されたクラスライブラリです。クラス名を変更してください。 –

答えて

15

変更

new LinkedList<String>() 

new java.util.LinkedList<String>() 

になる可能性の代わりに、すなわち、あなたのクラス LinkedListTestを呼び出します、 java.util.LinkedListではありません。

などの修飾されていないクラス名(java.util.LinkedListなどの「完全修飾名」とは対照的に)は、特定の順序で一致するものを検索することによって解決されます。おおよそ

  1. 含まれるクラスを探します。
  2. 非ワイルドカードインポートを探します。
  3. 同じパッケージ内のクラスを探します。
  4. ワイルドカードのインポートを探します。

Java言語仕様のセクション"6.5 Determining the Meaning of a Name"がより詳細に説明されています。

+0

これは機能しています。ありがとう! – Brett

+1

私はあなたがEclipseを使っていたことをたくさん賭けていました.... Eclipseは、もっとも不思議なライブラリを参照するのが大好きです。 – rewolf

2

あなたはコンパイラの名前解決アルゴリズムにビルトインLinkedListクラスよりも優先されますLinkedListと呼ばれるクラス、中にあなたのmain方法を置きます。つまり、mainメソッドがLinkedListというクラスの内部にあるため、コンパイラは、java.util.LinkedListの代わりに、LinkedListクラスを意味するようにLinkedListという名前を使用します。 2つの簡単な修正があります

  1. が代わりに

    一覧リスト=新しいLinkedListのを書いて、あなたのクラス

  2. の名前を変更します();

    一覧リストを作成する=新しいjava.util.LinkedList();

最初のオプションを強くお勧めします。 LinkedListクラスはリンクリストデータ構造を実際に表していないため、クラスの名前がコードを読む人に混乱を招くことがあります。たぶん、あなたのファイルが問題の原因がLinkedListコードclass LinkedListを含むクラスを参照していることである

import java.util.*; 

public class LinkedListTest { 
    // Implementation of main and helper methods 
} 
1
public class LinkedList { 

独自のクラスLinkedListと名付け、それはjava.util.LinkedListに優先を取っています。

クラスの名前を別のものに変更するか、new java.util.LinkedList<String>()を使用してどちらを希望するかを明示します。

3
public class LinkedList { 

あなたのクラスはジェネリックとして定義されていません。私はあなたがあなたのクラスの名前を変更する必要があるので、あなたはJavaのLinkedListを使用しようとしていると思います。

3

クラスはLinkedListとも呼ばれ、競合します。修正する場合は、代わりにこの行を使用してください。あなたのクラスの別の名前を持っていてください...

List<String> list = new java.util.LinkedList<String>(); 
関連する問題