我有两个类Transactions
的构造函数,它们在最后一个参数中有所不同,其中第一个构造函数采用Label
对象而第二个采用Box
对象。
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;
}
...
}
假设我创建了一个Transactions
类的对象,tr
。
我该如何区分它是哪一个?具有Label
对象或具有Box
对象的对象?已经调用了哪个构造函数?
答案 0 :(得分:5)
如果你需要区分它,两个对象可能不应该属于同一类。
在您的示例中,两个类可以共享一个公共超类,或者它们应该具有一个特殊类型的字段,并保存公共信息。
答案 1 :(得分:1)
您可以通过检查this.label == null
来轻松检查刚刚调用的是哪一个。
您还可以添加一个标志,该标志指向已调用的构造函数。
反正。如果您遇到这样的问题,您一定要再次考虑您的代码。那些构造函数可能不应该构造同一个类的对象。也许是一些继承,也许是一些构成......