0

私のコードが冗長であるかどうか(そして冗長である場合は、冗長性を排除するための可能な解決策)を誰かに教えてもらえれば、とてもありがたいです。

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値を取り、もう一方のコンストラクターはdouble数値の配列を取ります。一度だけインスタンス化する方法はありますQueueか?

4

5 に答える 5

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();
     ......
  }
}
于 2012-04-14T01:21:34.277 に答える
3

宣言中に変数をインスタンス化できます。

public class Question {
   private Queue<Double> a = new LinkedList<Double>();

   ...
 }
于 2012-04-14T01:22:15.193 に答える
2

演算子を使用thisして、適切な引数で別のコンストラクターを呼び出すことができます。

于 2012-04-14T01:22:04.043 に答える
1

フィールド宣言に入れます:

private Queue<Double> a = new LinkedList<Double>();
于 2012-04-14T01:21:42.620 に答える
1

これも考慮したいかもしれません:

public class Question {
    private Queue<Double> a;

    public Question(double ... ds) {
        a = new LinkedList<>(Arrays.asList(ArrayUtils.toObject(ds)));
    }
}

これは、単一の double、複数の double、または double の配列を渡すことができる varargs コンストラクターを使用します。したがって、次のことができます。

new Question(1, 2, 3);
new Question(1);
new Question(new double[] { 1, 2, 3 } );

注: Apache Commons LangArrayUtilsの一部です。

于 2012-04-14T01:29:35.657 に答える