web-dev-qa-db-ja.com

コレクション型はジェネリックではありません。引数<? E>を拡張します

Eclipse Galileoで奇妙な問題があります。
Java 1.6をJREとして設定しました。このコード行で

List templates = new ArrayList ();

Eclipseの問題リストに次のエラーが表示されます。

コレクション型はジェネリックではありません。引数でパラメーター化することはできません

このプロジェクトをAntでビルドしても問題はありません。
どうすれば修正できますか? Eclipseの問題のようですが、このエラーのため、プロジェクトをIDEからコンパイル/公開できません。

20
dbf

グーグルからそこに着く人たちのために:問題はcryptixライブラリにありました。 Javaビルドパスから削除すると、プロジェクトは正常にコンパイルされます。

6
dbf

どのListをインポートしますか? (これを見てください 2006年のスレッド

Java.awt.ListまたはJava.util.List

Eclipseが適切にコメントしているので、Java.awt.Listはパラメータ化されていません;)


もチェック

  • Javaビルドパス :J2SE 1.4.2ライブラリへの参照を含めることはできません。
  • ソース互換性 :プロジェクトプロパティ-> Javaコンパイラ設定、ソース互換性5.0または6.0。

それ以外に、多くの問題がありました 2005年に戻って 最新のEclipse 3.1ベータがJ2SE5をサポートしていたとき、これはその後修正されました。

プロジェクトで最新のJDK6を使用してみてください。

38
VonC

それは遅いですが、まだ返信しています、まだ問題に直面している他の人に役立つかもしれません。私はまったく同じ問題を抱えていました。リストはutil.Listで適切でした。解決策は、ライブラリのエクスポートを注文することでした。 Mavenまたはその他のライブラリを使用している場合:

プロジェクト内->ビルドパス->ビルドパスの構成->注文とエクスポート

「JREシステムライブラリ」が「Maven依存関係」より上にあることを確認します

これでうまくいきました。

21
Swagatika

クラスリストに名前を付けましたか?つまり:

import Java.util.*;

public class List {   // can't do this, name this something else.

    public static void main(String[] args) {
        List<Integer> l = new ArrayList<Integer>();

    }

}
3

ねえ、私は暗号ライブラリを削除しましたが、機能しませんでした。しかし、私はJREシステムライブラリを一番上に置いてみました。本当に変。

2
Camilo Cuesta

エントリ「JREシステムライブラリ...」をプロジェクト、プロパティ、Javaビルドパス、順序、エクスポート

1
Fabio

インポートを変更しました

   import javax.swing.text.html.HTMLDocument.Iterator;

   import Java.util.Iterator;

それは私のために働いた

1
upog

例えば:

public class AClass<T extends Object>
{
 public HashMap<String, String> myMap;
}

私が書いた場合:

public class BClass
{

private AClass aClass = new AClass();

public void test()
{

aClass.get("test");
//return Object class

}

}

しかし、私が書いた場合:

public class BClass
{

private AClass<?,?> aClass = new AClass<?,?>();

public void test()
{

aClass.get("test");
//return String class

}

}
1
zen0n

時にはそれはEclipseしゃっくりであり、Eclipse -cleanさらに、すべてのプロジェクトを更新すると役立ちます。

編集

コードを次のものに置き換えると、何かが変わりますか?

Java.util.List templates = new Java.util.ArrayList();

あるいは

Java.util.List<Object> templates = new Java.util.ArrayList<Object>();

1
Andreas_D

「import Java.util.List」を使用します

デフォルトのインポートの代わりに「import antlr.collections.List;」

また、コレクションAPIの一般的なサポートにはJRE5以上を使用します。

1
xxxx

Javaビルドパス参照Java 1.5

または、「import Java.util.List」ステートメントを追加しようとすると、次のことがわかります

Eclipseは他のリストタイプと競合していると言っています

たとえば、com.lowagie.xx.xxx.Listなどと競合している可能性があります。これらのインポートを回避しようとします

ステートメント

0
Sankar R.K

import antlr.collections.List;を削除して、 Ctr+space Java.utilを使用する

0
Kadiri

いくつかのアイデア:

  • プロジェクトで使用されているJREライブラリを確認してください(エクスプローラーを確認してください)。
  • eclipse設定でインストールされているJREを確認します(antで使用されるものと同じ)。
  • それが本当にエラーの原因であるかどうかを確認するために、行をコメント化します。
  • 行全体を最初から再入力します。
  • 新しい(クリーン)バージョンのEclipseを新しいフォルダーにインストールします(テスト)。
0