JDK6でGenericsを使用していると「型ArrayListは総称ではありません。」というエラーが発生する

このQ&Aのポイント
  • EclipseでJavaのプログラムを書いています。デスクトップ及びノートともにEclipse 3.2、JDK6です。
  • デスクトップで実行できていたプログラムをノート側のEclipseにインポートしたところ、ArrayListの部分に対して「型ArrayListは総称ではありません。引数でパラメーター化できません。」というエラーが出ます。
  • 同じバージョンのJDKなのにエラーが出るため、Eclipseの問題かと思いEclipse Europaをインストールしても解決しませんでした。
回答を見る
  • ベストアンサー

JDK6なのにGenericsでエラー「型ArrayListは総称ではありません。」が出る

EclipseでJavaのプログラムを書いています。 デスクトップ及びノートともにEclipse 3.2、JDK6です。 このたびデスクトップで実行できていたプログラムを、ノート側のEclipseにインポートしたところ ArrayList<・・・> の部分に対して 「型ArrayListは総称ではありません。引数<・・・>でパラメーター化できません。」 というエラーが出ます。同じバージョンのJDKなのにエラーが出るので、Eclipseの問題かと思いEclipse Europaをインストールしてもダメでした。 原因がおわかりになる方がいらっしゃいましたら、お教え頂けますと幸いです。 よろしくお願い申し上げます。

  • Java
  • 回答数1
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

コンパイラ準拠レベルはどうなってますか。 コンパイルエラーの右のアイコンをクリックして出る対応策にそのようなことがリストされませんか? はずしてたらごめんね。

masash_
質問者

お礼

Eclipseのウィンドウ→設定からJava→コンパイラーでコンパイラー準拠レベルの設定ができたのですね! おかげ様で解決しました。ありがとうございます!

関連するQ&A

  • 「型 ArrayList は総称ではありません・・・。」エラーについての問題です。

    コンニチハ、javaの初心者s-unです。 Eclipse(Ver:3.1.1)でJavaのプログラムを書いています。 *********************************** import java.util.ArrayList; class collectionTest1{ public static void main(String args[]){ ArrayList<String> array = new ArrayList<String>(); } } *********************************** エラーメッセージは 「型 ArrayList は総称ではありません。引数 <String> でパラメーター化できません。」 JDK準拠>>コンパイラー準拠レベル5.0になっています。 原因をお教え頂けますと幸いです。 よろしくお願い申し上げます。

    • ベストアンサー
    • Java
  • jdk1.6.0にアップしたところプログラムエラーとなり先に進みません

    今年1月末に「Java3Dで横置き円筒体の円筒中心軸廻りに回転アニメーションさせたいのですが(質問 QNo.3717442)」で質問をして、HarukaV49 さんから、プログラム・ソースを付けてのご丁寧な回答をいただき、同様のプログラム・ソースにて他の形状を付属させて横置き回転をさせることができていました。 ところが、最近 jdk1.6.0_04 或いは jdk1.6.0_05 にアップデートして、プログラム作成は Eclipse3.2 で行ったところプログラムエラーとなります。プログラムに未熟なため、プログラムのどこをどのように変えればよいかがわかりません。 教えていただいたプログラム・ソースでものjdk1.6.0_04 或いは jdk1.6.0_05 にして Eclipse3.2 でプログラミングすると、下記の箇所でeclipseからはコメントがありエラーとなります。 1)public List<Node> createShape3Ds() { -型 List は総称ではありません。引数 <Node> でパラメーター化できません。 パラメーター化された型はソース・レベルが 5.0 の場合にのみ使用可能です。 2}List<Node> shapes = new ArrayList<Node>(); - パラメーター化された型はソース・レベルが 5.0 の場合にのみ使用可能です。 - 型 List は総称ではありません。引数 <Node> でパラメーター化できません。 - 型 ArrayList は総称ではありません。引数 <Node> でパラメーター化できません。 3}for( Node shape : createShape3Ds() ) { - メソッド createShape3Ds() は型 AnimationSample で未定義です。 - 'for each' ステートメントはソース・レベルが 5.0 の場合にのみ使用可能です。 jdk1.5 を使用しているときは問題なかったのですが、今後 jdk1.6 更にバージョンアップさせていくときに対応できる、別途プログラミング方法、また以前教えていただいたプログラムソースのどこを書き換えればよいか教えていただきたく、よろしくお願いします。 尚、以前の質問と回答は下記です。 http://okwave.jp/qa3717442.html

    • ベストアンサー
    • Java
  • 総称型ArrayList<E>への参照はパラメ-タ

    Java初心者です宜しくお願いします。 0から8までの数字をランダムに並べ替えるサブ関数を作成しました。 Eclipse上で単独のプログラムとして動かした場合には、エラーは出ませんが、他のプログラムの サブ関数として動かそうとすると、 「ArrayListはraw型です。 総称型ArrayList<E>への参照は、パラメ-ター化する必要があります。 Listはraw型です。総称型ArrayList<E>への参照は、パラメ-ター化する必要があります。」と いうエラーが出ます。 どのように修正してやればいいのでしょうか。 ================================================================================ public void ShuffleTest() { List c = new ArrayList() ; for ( int i = 0 ; i < 9 ; ++ i ) { c.add( new Integer( i ) ) ; } Collections.shuffle(c); // [?�?�?�?�] int j = -1 ; for ( int i = 0 ; i < 9 ; ++ i ) { // toString(c.get( i )) ; System.out.print( c.get( i ) + " " ) ; int k = j + 1 ; s_Oder[ k ] = i ; System.out.print( "s_Oder["+ k + "] =" + i ) ; } }

    • ベストアンサー
    • Java
  • 「SimpleEntry を型に解決できません。」とエラーが出て悩んでます

    Eclipseでこのプログラムを実行しましたが, http://d.hatena.ne.jp/nowokay/20080707#1215460276 「SimpleEntry を型に解決できません。」 とエラーをはきます。 javaのバージョン違いかと思い,コマンドウィンドウを開いて,  java -version としましたが,version1.6.0_02 でSimpleEntryについて調べましたが, version1.6から採用しているらしく(http://java.sun.com/javase/ja/6/docs/ja/api/java/util/AbstractMap.SimpleEntry.html) 問題はない気がするのですが,何が原因なのかわかりません。 とにかくこのサイトのプログラムを一度実行してみたいです。 解決策を教えてください

  • ArrayListのバージョン変換

    今、JAVAを勉強しているのですが、環境の問題でJAVA1.4しか使えません。 しかし、市販の本を購入し、プログラムを書いて練習していたら、JAVA5.0のプログラムでした。 下記のプログラムを1.4のバージョンに変更するにはどうしたらいいのでしょうか?? ---プログラム--- import java.util.ArrayList; public class ItemCollection { //商品一覧を保持するArrayList protected ArrayList<Item> list; //商品一覧に対するGETTER,SETTER public ArrayList getList(){ return this.list; } public void setList(ArrayList<Item> list){ this.list = list; } //引数のないコンストラクタ public ItemCollection(){ } //商品一覧に商品を追加 public void addItem(Item item){ list.add(item); } //商品一覧に商品を参照 public Item getItem(int index){ return list.get(index); } //商品一覧の数を返す public int getSize(){ return list.size(); } }

    • ベストアンサー
    • Java
  • JAVAのJDK6/7の切り替え

    64ビットのWindows8のマシンにjdk-6u21-windows-x64.exeとjdk-7u45-windows-x64.exeの2つ をインストールした状態で、環境変数で、 JAVA_HOME6 : C:\Program Files\Java\jdk1.6.0_21 JAVA_HOME7 : C:\Program Files\Java\jdk1.7.0_45 JAVA_HOME : %JAVA_HOME6% PATH : %JAVA_HOME%\bin; のようにして6と7を切り替えられるようにして使いたいのですが、現在上記の設定で、 >path を実行すると6のパスを指しているのですが、 >java -version を実行すると常に7を表示します。 この状態で、コマンドプロンプトからコマンドを実行したり、Eclipseを立ち上げた場合、実際 どちらのものが使われることになるのでしょうか? また、ひとつのマシンで上記のようにJavaを切り替えて使うことは可能なのでしょうか?

    • ベストアンサー
    • Java
  • JREとJDKについて質問します

    JREとJDKについて質問します。 1)dos窓から、java -version とキーインすると下記の表示となりました。 java version "1.8.0_31" java(TM) SE Runtime Environment(build 1.8.0_31-b13) Q1) これは、JRE の確認(バージョン)と考えて宜しいでしょうか? 2)Windows7のコントロールパネルのプログラムと機能の一覧表の中に下記があります。 Java 8 Update31 Java SE Development kit Update 25 Java SE Development kit Update 31 Q2) 上記の Java 8 Update31 は、JREがインストールされていることを示していますか? そして、JREのバージョンは、前記の1)の 『java version "1.8.0_31"』 と考えて宜しいでしょうか? Q3) 『Java SE Development kit Update 25』の方はバージョンが、古いので 削除しても問題ありませんか? 以上、初歩的な質問ですが、宜しくお願いします。 尚、現在EclipseのPleiades44でソフト開発していますので、この質問をしました。 (JREとJDKのバージョンが一致している必要がある)

    • ベストアンサー
    • Java
  • JBoss4.0.2に対応するJDKは?

    いつもお世話になってます。 Windows2000 SP4 eclipse3.1.1 j2sdk1.4.2_08 の環境でJBossAS4.0.2を入れてみました。 ついでに、eclipseにJBossIDEも入れてみました。 で、JBossIDEから「Run XDoclet」を実行すると BUILD FAILED java.lang.UnsupportedClassVersionError: xjavadoc/ant/XJavadocTask (Unsupported major.minor version 49.0) が、出てしまいます。 UnsupportedClassVersionErrorってことは、JavaVM のバージョンがおかしいって事ですよね? つまり、対応しているjreではないということですよね? やっぱりJDK1.5以上じゃないとダメなんでしょうか? 逆にJDK1.4.2_08で動くJBossのバージョン、ご存知でしたら教えてください。

  • お世話になります。下記のjavaの総称を詳しい方がいらっしゃいましたら

    お世話になります。下記のjavaの総称を詳しい方がいらっしゃいましたら、ぜひ教えてお願いします。 Class A{ private HashMap dataTable; private void a1(){ ArrayList its = (ArrayList)(dataTable.get(key1)); if (its==null){ its = new ArrayList(); its.add(new B) } ... dataTable.put(key1,its); } private void b1(){ ArrayList its = (ArrayList)(dataTable.get(key3)); if (its==null){ its = new ArrayList(); its.add(new C()) } ... dataTable.put(key4,its); } } B、Cはぞれぞれ違うObjectです。 JDK5をアップすると、HashMap,ArrayListの無検査呼びコンパイラ警告があって、総称に改修したいですが、改修するやり方をご存知の方がいらっしゃいましたら、ぜひ教えてくださいまして、非常に助かります。

  • ArrayList でスタックを

    初歩的でツマラナイかもしれません。 import java.util.ArrayList; でスタックを実現するクラス"MyStack"を書きました。 フィールドは private ArrayList<Integer> stack = new ArrayList<Integer>(); のみという条件です。 MyStack.java - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - import java.util.ArrayList; public class MyStack {   private ArrayList<Integer> stack = new ArrayList<Integer>();      // データを先頭に追加   public void push( int item ) {     stack.add( item );   }   // 先頭のデータを取り出す   public int pop( ) {     int rtn;     if( stack.isEmpty() ) {       System.out.println( "スタックは空です." );       System.exit( 1 );     }          rtn = stack.get( 0 );     stack.remove( 0 );     return rtn;   } } このMyStackを実行するクラス"MainForMyStack"を書きます。 実行結果は、標準出力に 43210 と出ることを想定しています。 MainForMyStack.java - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - import java.util.ArrayList; public class MainForMyStack {   public static void main(String[] args) {     MyStack stack = new MyStack();     // 0,1,2,3,4 をスタックに追加     for( int i=0; i < 5; i++ ) {       stack.push( i );     }     // スタックのデータを先頭から取り出す     for( int i=0; i < stack.size(); i++ ) {       System.out.print( stack.pop() );     }   } } さて、MainForMyStack.java の i < stack.size(); の箇所でエラーが出るのはなぜでしょう? どなたかご教授の方お願いします。

    • ベストアンサー
    • Java