如何使用构造函数外的参数实例化一个类?

时间:2018-03-14 15:08:33

标签: java

我创建了一个这样的类

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 的错误。

我真的不知道这用英语怎么称,但我希望我的问题很清楚

3 个答案:

答案 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,就可以返回实例。你甚至可以把二传手连接起来。