如果有人能告诉我我的代码是否冗余(如果是,可能的解决方案来消除冗余),我将非常感激。
public class Question {
private Queue<Double> a;
public Question(double XXX) {
a = new LinkedList<Double>(); // REDUNDANT?
......
}
public Question(double[] YYY) {
a = new LinkedList<Double>(); // REDUNDANT?
......
}
}
基本上,一个构造函数接受一个double值,而另一个构造函数接受一个双数组数组。有没有办法只实例化一次Queue
?
答案 0 :(得分:3)
使用Java 7和NetBeans或其他IDE时,IDE可能会标记
a = new LinkedList<Double>();
多余,您可以使用
a = new LinkedList<>();
代替。但是,如果您只是询问代码中的实际冗余,请使用:
public class Question {
private Queue<Double> a;
public Question() {
a = new LinkedList<>();
}
public Question(double XXX) {
this();
......
}
public Question(double[] YYY) {
this();
......
}
}
答案 1 :(得分:3)
您可以在声明时实例化变量。
public class Question {
private Queue<Double> a = new LinkedList<Double>();
...
}
答案 2 :(得分:2)
您可以使用this
运算符使用适当的参数调用另一个构造函数。
答案 3 :(得分:1)
将它放在字段声明中:
private Queue<Double> a = new LinkedList<Double>();
答案 4 :(得分:1)
您可能还想考虑这个问题:
public class Question {
private Queue<Double> a;
public Question(double ... ds) {
a = new LinkedList<>(Arrays.asList(ArrayUtils.toObject(ds)));
}
}
这使用varargs构造函数,您可以向其传递一个double,多个double或一个double数组。所以你可以这样做:
new Question(1, 2, 3);
new Question(1);
new Question(new double[] { 1, 2, 3 } );
注意: ArrayUtils
是Apache Commons Lang的一部分。