Jür*_*aul 0 java method-chaining
我们将这段代码视为我们的示例:
import java.awt.*;
class Maze extends Panel{
String name;
public static void main(String[] args){
Maze m = new Maze();
System.out.println(m.setName("Hello World").getName());
}
public Maze setName(String name){
this.name = name;
return this;
}
public String getName(){
return name;
}
public void paint(){
}
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试理解方法链,并且正如其他问题的答案,请使用return this.我尝试了它,是的它可行,但不是像setName()上面的方法那样的mutator方法.为什么编译器输出:
The return type is incompatible with Component.setName(String)
Run Code Online (Sandbox Code Playgroud)
你给的代码应该没问题.
但是,我怀疑问题是你的真实代码是一个类扩展Component,并且你试图覆盖 setName.
也许相反,你可以编写一个withName方法,如下所示:
public Maze withName(String name) {
setName(name); // Inherited method
return this;
}
Run Code Online (Sandbox Code Playgroud)
...虽然您应该知道,withXyz通常在API中使用它来创建类型的新实例(特别是不可变类型),而不是修改现有实例.