首页 > 解决方案 > 避免重载构造函数中的重复

问题描述

我已经有一个构造函数测试,并尝试重载这个,代码如下:

public Test(string a, string b, XXX c, XXX d){
    this.a = a;
    this.b = b;
    methodA(a, b, d);
}
public Test(string a, string b, XXX c, XXX d, String e){
    this.a = a;
    this.b = b;
    methodA(a, b, d, e);
}

methodA 也是一个重载方法,如您所见“this.a = a; this.b = b;” 那部分被重复了。我怎样才能避免这种情况?

标签: javaoverloading

解决方案


您可以使用该this()方法来避免代码的重复。

所以你所拥有的已经非常接近你需要的了。只需将methodA(...)通话更改为通话即可this(...)

正如@Michael Berry@Silvio Mayolo的评论所建议的那样,我什至会更进一步,并链接构造函数。最后的结果应该是这样的。

public Test(string a, string b, XXX c, XXX d, String e){
    this.a = a;
    this.b = b;
    this.c = c;
    this.d = d;
    this.e = e;
}
public Test(string a, string b, XXX c, XXX d){
    this(a, b, c, d, null);
}

推荐阅读