3 回答
TA贡献1884条经验 获得超4个赞
问题
您的第一个构造函数似乎存在问题,它在运行时使用以下参数调用第二个构造函数:
this ("Default", 0, null);
这是因为creditLimit 和email 的值没有设置。
CreditLimit 默认为 0,因为这是整数的默认值。
email 默认为 null,因为它是一个空对象引用。
解决方案
为了解决这个问题,我建议在类的顶部有一些定义默认行为的最终字段。
public class VipCostumer {
// Change these values to what you would like.
public static final String DEFAULT_NAME = "Default";
public static final int DEFAULT_CREDIT = 100;
public static final String DEFAULT_EMAIL = "example@abc.com";
public VipCostumer() {
this(DEFAULT_NAME, DEFAULT_CREDIT, DEFAULT_EMAIL);
}
// rest of your code
}
权衡
虽然这可能会解决您的问题,但我建议您考虑是否要为像客户这样具体的东西设置默认值。根据您的使用情况,您可能希望所有客户数据都是可区分的,而创建大量默认客户将剥夺这种能力。
TA贡献1829条经验 获得超13个赞
如果您的目标是将名称的第一个字段设置为默认值假设用户没有输入名称,请使用此构造函数
public VipCustomer()
{
this.name = "Default";
}
如果 CreditLimit 和 email 是必填值,而 name 不是必填值
public VipCustomer(int creditLimit, String email) {
this.name = "Default";
this.creditLimit = creditLimit;
this.email = email;
}
添加回答
举报