日期:2014-05-20  浏览次数:20673 次

还是JAVA强制转型的问题!请问这条语句的作用是什么?将对象具体化么?
返回的是一个Object类型。加上类名,将之具体化么?

比如 Name n = (Name)i.next();

Name是一个自定义的类名 , i.next()返回的是一个Object或者说是泛型。请问这个的作用是什么?

具体化么?


Java code

import java.util.*;

public class IteratorTest{
   public static void main(String[] args){
      Collection c = new HashSet();//      Collection c = new HashSet();
      c.add(new Name("f1","l1"));
      c.add(new Name("f2","l2"));      
      c.add(new Name("f3","l3"));
      //System.out.println(c);
      Iterator i = c.iterator();
      if(i.hasNext()){
         Name n = (Name)i.next(); // 谁能帮我解释下这个语句的作用
         System.out.println(n.getFname() + " ");
         }
      for(Iterator l = c.iterator();l.hasNext();){
         Name n = (Name)l.next(); // 谁能帮我解释下这个语句的作用
         if(n.getLname() == "l2"){
            l.remove();
            }
         }
         System.out.println(c);   
      }
      
   static class Name{
      private String fname;
      private String lname;
      
      public Name(String fname,String lname){
         this.fname = fname;
         this.lname = lname;
         }
      
      public String getFname(){
         return fname;
         }
      
      public String getLname(){
         return lname;
         }         
         
      public String toString(){
         return fname +" " + lname;
         }   
      
      }
   
      
   }





------解决方案--------------------
调用it.next()方法返回的是object类型的对象,object的对象根本没有getLname()的方法,只有name类对应的对象才有,如果你希望得到getLname()方法返回的参数,自然需要把对象先转化为name类型。