我创建了一个这样的类
public class Something{
private int foo;
private int bar;
public Something(int f){
setFoo(f)
}
public int getFoo(){
return foo;
}
public void setFoo(int f){
this.foo = f;
}
public int getBar(){
return bar;
}
public void setBar(int b){
this.bar = b;
}
}
如何使用类似
的内容创建此类的新实例某事smt = new Something(15) .setBar(10);
当我尝试这样做时,当smt需要 Something对象时,它会标记出一个 void 的错误。
我真的不知道这用英语怎么称,但我希望我的问题很清楚
答案 0 :(得分:6)
你在谈论流利的建设者"模式"。
只需让您的void
设置者返回Something
并添加return this;
作为方法正文中的最后一个语句。
E.g:
public Something setBar(int b){
this.bar = b;
return this;
}
然后,您可以在"构建"的同时链接方法调用。你的Something
,例如:
Something mySomething = new Something(42).setBar(42).set...
答案 1 :(得分:2)
这是因为setBar(..)
没有返回任何内容。
您应该执行类似
的操作Something smt = new Something(15);
smt.setBar(10);
答案 2 :(得分:1)
以这种方式定义类,它将起作用:
public class Something{
private int foo;
private int bar;
public Something(int f){
setFoo(f)
}
public int getFoo(){
return foo;
}
public Something setFoo(int f){
this.foo = f;
return this;
}
public int getBar(){
return bar;
}
public Something setBar(int b){
this.bar = b;
return this;
}
}
这样,只要您使用setter,就可以返回实例。你甚至可以把二传手连接起来。