2016-07-19 11 views
1

クラスの2つのコンストラクタがあります。最初のコンストラクタがLabelオブジェクトを取り、2番目のコンストラクタがBoxオブジェクトをとる最後の引数が異なります。クラスの2つのインスタンスを区別する方法

public class Transactions { 
    private String date; 
    private String kind; 
    private int employee; 
    private Label label; 
    private Box box; 

public Transactions(String date, String kind, int employee, Box box) { 
    this.date = date; 
    this.kind = kind; 
    this.employee = employee; 
    this.box = box; 
} 

public Transactions(String date, String kind, int employee, Label label) { 
    this.date = date; 
    this.kind = kind; 
    this.employee = employee; 
    this.label = label; 
} 


... 

} 

私はtrあるクラスTransactionsのオブジェクトを作成したとしましょう。 どのように区別することができますか? LabelオブジェクトまたはBoxオブジェクトのオブジェクトですか?どのコンストラクタが呼び出されましたか?

+2

どのコンストラクタが呼び出されたかは関係ありませんが、 'box'または' label'がnullかどうかを確認できます。それが良いデザインとみなされるかどうかは、別の問題です。 – Thomas

答えて

5

これを区別する必要がある場合は、両方のオブジェクトが同じクラスであってはいけません。

例では、両方のクラスが共通のスーパークラスを共有するか、共通の情報を保持する特別なタイプのフィールドを持つ必要があります。

1

this.label == nullをチェックすることで、どれが呼び出されたかを簡単に確認できます。

どのコンストラクタが呼び出されたかを示すフラグを追加することもできます。

とにかく。このような問題に直面しているなら、間違いなくあなたのコードをもう一度考えなければなりません。これらのコンストラクタは、おそらく同じクラスのオブジェクトを構築すべきではありません。おそらくいくつかの継承、おそらくいくつかの構成...

関連する問題