java方法语句以:'return new'(关于匿名类的混淆)开头

时间:2012-03-15 17:15:30

标签: java return new-operator anonymous-class

为什么方法以'return new'开头?

public Iterator<T> iterator() {  
    return new Iterator<T>() {  
        ...
    }
}

3 个答案:

答案 0 :(得分:4)

这创建了一个类的实例(实际上它创建了一个类的子类,因为@biziclop已经被挑选出来)并返回它。这通常用在“工厂”类中,沿着这些方向:

public static Button createButton(int x, int y, String label){
     return new Button(x,y,label){
         void onClick(){
          ...
         }
     }
}

/* .... */
Button b = Toolkit.createButton(20,20,"Hello!");

答案 1 :(得分:3)

方法iterator()返回Iterator<T>类型,因此该方法应该有一个return语句,后跟一个Iterator<T>类型的对象。

new Iterator<T>() {  
    ...
}

这是一个匿名类,您可以通过实现匿名类中的所有抽象方法来实例化接口实例。详细了解Anonymous classes

答案 2 :(得分:2)

您所看到的是一个方法public Iterator<T> iterator(),它返回一个新的匿名内部类实例,而不是方法。如果您以前从未见过匿名的内部课程,那么这种困惑是可以理解的。

Here's a little info on anonymous classes in Java.