Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java方法语句以“returnnew”开头(关于匿名类的混淆)_Java_Return_New Operator_Anonymous Class - Fatal编程技术网

java方法语句以“returnnew”开头(关于匿名类的混淆)

java方法语句以“returnnew”开头(关于匿名类的混淆),java,return,new-operator,anonymous-class,Java,Return,New Operator,Anonymous Class,为什么该方法以“returnnew”开头 public Iterator<T> iterator() { return new Iterator<T>() { ... } } 方法迭代器返回一个迭代器类型,因此该方法应该有一个return语句,后跟一个迭代器类型的对象 这是一个匿名类,您可以在其中实例化接口实例,并在该匿名类中实现所有抽象方法。阅读更多信息。迭代器方法返回迭代器类型,因此该方法应该有一个return语句,后跟一个迭

为什么该方法以“returnnew”开头

public Iterator<T> iterator() {  
    return new Iterator<T>() {  
        ...
    }
}
方法迭代器返回一个迭代器类型,因此该方法应该有一个return语句,后跟一个迭代器类型的对象

这是一个匿名类,您可以在其中实例化接口实例,并在该匿名类中实现所有抽象方法。阅读更多信息。

迭代器方法返回迭代器类型,因此该方法应该有一个return语句,后跟一个迭代器类型的对象


这是一个匿名类,您可以在其中实例化接口实例,并在该匿名类中实现所有抽象方法。阅读更多信息。

这将创建类的实例,实际上它创建了类的子类,因为@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!");

这将创建类的一个实例,实际上它创建了类的一个子类,因为@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!");

您看到的是一个方法,公共迭代器迭代器,它返回一个新的匿名内部类实例,而不是一个方法。如果您以前从未见过匿名内部类,那么这种混乱是可以理解的


您看到的是一个方法,公共迭代器迭代器,它返回一个新的匿名内部类实例,而不是一个方法。如果您以前从未见过匿名内部类,那么这种混乱是可以理解的


这与迭代器变量被赋值为“new”后返回的情况相同。您似乎认为它是returnnew。。。。。它实际上是返回新的。。。;当然可以,但是为什么不在方法中包含这个返回语句呢?您在这里看到的是一个匿名的内部类,我怀疑这是造成混乱的原因。谁否决了这个?这是一个非常合理的问题。这与迭代器变量被赋值为“new”并随后返回相同。您似乎认为它是return new。。。。。它实际上是返回新的。。。;当然可以,但是为什么不在方法中包含这个返回语句呢?您在这里看到的是一个匿名的内部类,我怀疑这是造成混乱的原因。谁否决了这个?这是一个非常合理的问题。我知道这是吹毛求疵,但它创建了该类的一个子类,然后创建了该类的一个实例并返回它。这种区别很重要,因为您可以而且经常会使用抽象类和接口来实现这一点。在后一种情况下,它创建了一个实现,但这是挑剔++。@biziclop lol,但感谢挑剔。我会编辑答案。我知道这是吹毛求疵,但它会创建类的一个子类,然后创建该类的一个实例并返回它。这种区别很重要,因为您可以而且经常会使用抽象类和接口来实现这一点。在后一种情况下,它创建了一个实现,但这是挑剔++。@biziclop lol,但感谢挑剔。我将编辑答案。