【发布时间】:2017-11-22 06:49:27
【问题描述】:
在添加新号码时,我正在尝试通过默认设置取消限制。我希望在初始化时设置的全参数构造函数仍然有限制,但对无参数和 1 参数构造函数没有限制。
public class SMSDataModelList implements SMSDataModelInterface, Serializable {
List<String> list = new ArrayList<String>();
//List<String> list = new LinkedList<String>();
private static final long serialVersionUID = 1L;
private static final int DEFAULT_MAX_NUM_PHONE_NUMBERS = 20;
public static final String FULL = "FULL";
public static final String DUPLICATE = "DUPLICATE";
private String message; //The SMS message
private String[] phoneNumbers; //The collection of phone numbers
private int maxNumPhoneNumbers; //Max numbers in list
public SMSDataModelList(String message) {
this(message, DEFAULT_MAX_NUM_PHONE_NUMBERS);
}
public SMSDataModelList() {
this("", DEFAULT_MAX_NUM_PHONE_NUMBERS);
}
public SMSDataModelList(String initialMessage, int maxNumPhoneNumbers) {
this.message = initialMessage;
this.maxNumPhoneNumbers = maxNumPhoneNumbers;
this.phoneNumbers = new String[maxNumPhoneNumbers];
}
@Override
public String addPhoneNumber(String newPhoneNumber) {
String result;
if (list.size() == maxNumPhoneNumbers) {
result = FULL;
} else {
boolean exists;
exists = findPhoneNumberIndex(newPhoneNumber) != -1;
if (exists) {
result = DUPLICATE;
} else {
list.add(newPhoneNumber);
result = newPhoneNumber;
}
}
return result;
}
}
我已尝试将其添加到 addPhoneNumber 方法中:
if (DEFAULT_MAX_NUM_PHONE_NUMBERS == 20) {
maxNumPhoneNumbers = (list.size() + 1);
}
我认为这在测试 no-arg 和 1-arg 构造函数时效果很好,但是当涉及到 all-arg 时,我注意到它也允许数组大小在那里增加。我现在明白为什么错了,但不确定我是否走在正确的轨道上。
我真的可以让 no-arg 和 1-arg 构造函数具有无限的数组大小和静态默认值吗?
【问题讨论】:
标签: java arrays list arraylist constructor