我想在添加新号码时通过默认设置删除限制。我希望仍然对all-arg构造函数有一个限制,它在初始化时设置,但不在no-arg和1-arg构造函数上设置。
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构造函数具有静态默认值的无限数组大小?
答案 0 :(得分:0)
如果我明白你的意思,你的构造函数中似乎需要另一个标志,以表明手机的数量是否应限制在最初的最大数量:
public SMSDataModelList(String message) {
this(message, DEFAULT_MAX_NUM_PHONE_NUMBERS, false);
}
public SMSDataModelList() {
this("", DEFAULT_MAX_NUM_PHONE_NUMBERS, false);
}
public SMSDataModelList(String initialMessage, int maxNumPhoneNumbers) {
this(initialMessage, maxNumPhoneNumbers, true);
}
public SMSDataModelList(String initialMessage, int maxNumPhoneNumbers, boolean limited) {
this.message = initialMessage;
this.maxNumPhoneNumbers = maxNumPhoneNumbers;
this.phoneNumbers = new String[maxNumPhoneNumbers];
this.limited = limited;
}
您可以使用limited
标志来确定phoneNumbers
数组在变满时是否可以增加 - 您需要向检查该标志的addPhoneNumber
添加逻辑。 / p>
P.S。我刚刚注意到你的构造函数和实例变量与addPhoneNumber
方法不匹配。构造函数初始化数组以存储电话号码,而addPhoneNumber
方法使用ArrayList
。你应该决定你想要使用哪两个。 ArrayList
会更容易,因为每次现有数组变满时都不必重新分配新数组。