编译运行结果分别如下:
C:\Documents and Settings\Administrator\桌面\区>javac test.java
注意:test.java 使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。C:\Documents and Settings\Administrator\桌面\区>java test
f1
f2
f3程序如下:
import java.util.*;
public class test{
public static void main(String []aaa){
ArrayList c=new ArrayList();c.add(new name("f1","l1"));
c.add(new name("f2","l2"));
c.add(new name("f3","l3"));Iterator i=c.iterator();
while(i.hasNext())
{name n=(name)i.next();
System.out.println(n.getfirstname());
}
}
}class name{
String firstname,lastname;
public name(String a,String b){
firstname=a;lastname=b;
}
public String getfirstname(){
return firstname;
}
public String getlastname(){
return lastname;
}
}

解决方案 »

  1.   

    这是因为ArrayList是泛型类,当指定了对应的储存类型就不会了ArrayList<String> list = new ArrayList<String>();
      

  2.   

    class name{ 类名应该用大写,可能是这里的问题。
      

  3.   

    对应于你的代码来说ArrayList里应该放的是name所以定义的时候要用ArrayList<name> c = ArrayList<name>();类名以后最好用大写,虽然不是强制要求
      

  4.   


    ArrayList<name> c = new ArrayList<name>();
      

  5.   

    都说得很清楚了
    没有明确指定ArrayList中的类型
    这样JAVA编译器无法进行类型检查
      

  6.   

    编译使用的JDK版本是1.5或者是1.6的,中间有泛型。你的代码是书上jdk老版本的。所以会出现编译警告。
      

  7.   

    对,ArrayList是泛型<E>,在使用时明确指定要存储的类型,就不户有警告了
      

  8.   


    C:\Documents and Settings\ricky\desktop>javac -source 1.4 Test.java
    Test.java:4: -source 1.4 中不支持泛型
    (请使用 -source 5 或更高版本以启用泛型)
                    ArrayList<String> list = new ArrayList<String>();
                             ^
    1 错误
      

  9.   

    1.5开始支持泛型了,List<E>
      

  10.   

    书上的例子是jdk1.4一下的,你的机器上是1.5以上的,语法有变化。导致有warning。
      

  11.   

    泛型,你再看疯狂Java吧,我也是一样,不过我已经学过泛型了
      

  12.   

    List list = new ArryList();