import java.util.*;class Student{
  int number;
  String name;
  double grade;
  public Student(int number,String name,double grade){
     this.number=number;
     this.name=name;
     this.grade=grade;
  }
  public String toString(){
     return "number:"+number+" name:"+name+" grade:"+grade;
  }
} public class test{
  public static void main(String args[]){
     List<Student> li=new ArrayList<Student>();
     li.add(new Student(1,"A",80));
     li.add(new Student(2,"B",70));
     li.add(new Student(3,"C",60));
        Iterator t=li.iterator(); //注释处
        while(t.hasNext()){
            Student s=(Student)t.next();
            System.out.println(s);
        }
  }
}泛型用在哪儿就不会报“使用了未经检查或不安全操作”的提醒?
Iterator t=li.iterator(); 注释处没有这样写Iterator<Student> t=li.iterator();为什么不报这个提醒?
见笑了...

解决方案 »

  1.   

    我用myeclipse编译 没警告啊 运行正常的
      

  2.   

    举个简单的例子吧,来说明先泛型的作用。
    从提款机中取出来的是钱,你取出钱直接,不管是欧元还是人民币反正都是钱,就不用强制转化成别的东西了。这也是一种安全的表现。
    如果提款机没有规定取出来是什么东西,你以为是钱,说不定取出来时白纸,你 Student s=(Student)t.next();这样强制(将白纸转化成钱)肯定就会有异常。
    可能不太合适。就这么个意思吧。
    所以上面的程序这样改比较好:
     Iterator<Student> t=li.iterator(); //规定取的是钱。
      while(t.hasNext()){
      Student s=t.next();//直接拿出来用就行了,不用强制转化。因为取出来肯定是钱
      System.out.println(s);
      }
      

  3.   

    泛型,要不要进行警告,取决于IDE的设置。你想让它报就报,看着烦关了这个功能,就不会再提示了
      

  4.   

    还有就是你既然用泛型了怎么还用Student s=(Student)t.next();
    你应该这样写    Iterator<Student> t=li.iterator();
    然后Student s=t.next();就ok了