这个方法返回的是一个Iterator类型的。方法的返回值可以是任意类型。
方法没有接口只说。你理解错了。

解决方案 »

  1.   

    可以返回接口。1.5以后的版本集合都是泛型,因此楼主你的Collection和Iterator都应该跟上尖括号,否则会提醒说这个是raw type。现在的1.7连Swing中的许多容器都是泛型了。
      

  2.   

    可以啊,应该有学过父类引用可以引用子类对象吧。
    例如
    class A{}
    class B extends A{}A a = new B();
    上述语句是没问题的,而如果有一个方法如下
    A fun()
    {
        return B;
    }
    也是可以的,这就是多态的一个应用了。而把具体的类换成接口也行的通,这样子的话,B就是一个具体实现类或者子接口了。
    java 5之前很多集合类的方法返回的是Object对象(针对JDK1.5之前的集合类,1.5由于有了泛型,好像这种方法比较少了)。就是因为Object对象是所有类的祖先类,所以如果返回值类型是Object的话,return任何对象都是正确的,就可以保证集合类对于任意类型的对象都可以正确返回。不过你拿什么去引用这个对象就是另外一回事了。
    而面向接口编程我也不懂,至今了解的皮毛就是,给你一个接口,而我返回的具体实现类是什么你就不用管。只管用接口就行,感觉就是接口的对接吧。菜鸟理解不当请指出= =
      

  3.   

    顺便说一下,向上转型就是 A b = new B();
    也就是用父类引用去引用子类对象(父类类型 父类引用 = new 子类对象)
    向下转型就是反过来 B b; 
                       A a = new A();
                       b = (B)a;
    简单点说就像基本数据的转型是一个道理。
    如 double a = 5;
       int b = (int)6.5;
    不过对象的向下转型出错的错误比较大- -  
      

  4.   

    这就是effective java里所谓 通过接口引用对象
      

  5.   


      怎么说呢 其实不太确切,你应该知道,子类是可以向上转型为父类,因此传递给父类的消息子类是都可以接受的,接口和其实现类有点这样的关系,当然还是有不同。
      当我们返回一个接口类型时,其实就是意味着,以后你完全可以把其返回值赋给一个实现了此接口的实现类的实例。这样编写的好处是,此接口的实现类的实例在运行时可以任意灵活指定,而不需要修改接口函数的代码。
    public interface UserDao
    {
       ... 
    }
    public class UserDaoImpl implements UserDao
    {
       ...
    }class example{
      public UserDao handle(UserDao userdao)
    {
       // 业务处理
       return userdao;
    }public static void main(String args[])
    {
       UserDaoImpl impl_one =  new UserDaoImpl();
       UserDaoImpl impl_two = getUserDao(impl_one); //此处impl_two得到的是处理后的impl_one
    }
    }
      

  6.   

    也就是说,只要某各类实现了那个接口,那么他的实例化的对象都可以作为放回类型是接口的方法。
    比如 接口 名字=new 实现了该接口的类();或者  接口  方法名{.......  return 实现了该接口的类的一个对象}  是吗?