Java初始化类而不重复自己

时间:2010-07-21 13:09:32

标签: java

是否有可能更简洁地重写以下内容,我不必重复写两次this.x = x;

public class cls{
    public int x = 0;
    public int y = 0;
    public int z = 0;

    public cls(int x, int y){
        this.x = x;
        this.y = y;
    }

    public cls(int x, int y, int z){
        this.x = x;
        this.y = y;
        this.z = z;
    }
}

5 个答案:

答案 0 :(得分:15)

BoltClock的答案是正常的方式。但是有些人(我自己)更喜欢反向的“构造函数链接”方式:将代码集中在最具体的构造函数中(同样适用于普通方法)并使另一个调用那个,使用默认参数值:

public class Cls {
    private int x;
    private int y;
    private int z;

    public Cls(int x, int y){
         this(x,y,0);
    }

    public Cls(int x, int y, int z){
        this.x = x;
        this.y = y;
        this.z = z;
    }
}

答案 1 :(得分:10)

使用this关键字调用此重载构造函数中的其他构造函数:

public cls(int x, int y, int z){
    this(x, y);
    this.z = z;
}

答案 2 :(得分:1)

答案 3 :(得分:0)

您可以使用初始化块来实现此目的。

答案 4 :(得分:0)

非常简单:只需编写一个这样的初始化函数:

public class cls{
    public int x = 0;
    public int y = 0;
    public int z = 0;

    public cls(int x, int y){
       init(x,y,0);
    }

    public cls(int x, int y, int z){
       init(x,y,z);
    }

     public void init(int x, int y, int z ) {
        this.x = x;
        this.y = y;
        this.z = z;  
    }
}