dポイントプレゼントキャンペーン実施中!

題名どおりなのですが、まず以下のようなソースを
書きました。

import java.util.*;

class Rab{
private String name;
private int number;

public Rab(){
name= "";
number=0;
}

public void setName(String name){
this.name=name;
}

public void setNumber(int number){
this.number=number;
}

public String getName(){
return name;
}

public int getNumber(){
return number;
}

}

public class Rabexc{
public static void main(String[] args){
Rab[] rab=new Rab[5];
for(int i=0; i<5; i++){
rab[i]=new Rab();
}
rab[0].setName("Owner");
rab[1].setName("Adminstrator");
rab[0].setNumber(1);
rab[1].setNumber(2);
ArrayList al=new ArrayList();
al.add(rab[0]);
al.add(rab[1]);
for(int i=0; i<al.size(); i++){
rab[i]=(Rab)al.get(i);
System.out.println("name: "+rab[i].getName()+"number: "+rab[i].getNumber());
}
}
}

これを実行してみたところ、
Rabexc.java:41: 警告:[unchecked] raw 型 java.util.ArrayList のメンバとしての add
(E) への無検査呼び出しです。
al.add(rab[0]);
^
Rabexc.java:42: 警告:[unchecked] raw 型 java.util.ArrayList のメンバとしての add
(E) への無検査呼び出しです。
al.add(rab[1]);
^
警告 2 個

という警告が出てコンパイルできません。

サイト・参考書なども調べて考えていたのですが、いまいち問題の解決法が浮かばないため、詳しい方いましたら教えていただけると幸いです。
宜しくお願い致します。

A 回答 (1件)

JDKは、Java 5.0以降(1.5以降)をお使いですね?


JavaSEでは、5.0以降、総称型というのが用意されています。コレクション・フレームワーク関係(要するにArrayListのようにどんなオブジェクトでも入れておけるものです)を使用する場合には、この総称型を使って保管するクラスの種類を特定しておけるようになっています。

ArrayList al=new ArrayList();

ArrayList<Rab> al = new ArrayList<Rab>();

このようにしてみてください。
詳細は、「総称型」または「Generic」で調べてみるとよいでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!