我得到了
java.lang.UnsupportedOperationException
列表中的例外。
为什么会发生此异常?
List<String> smsUserList = new ArrayList<String>();
if (event.getEventTemplate().equalsIgnoreCase(CommunicationConstants.MEMBER)) {
String testNumbers = env.getRequiredProperty(CommunicationConstants.TEST_SMS_NUMBRES);
String[] testSmsNumber = testNumbers.split(",");
if (null != testSmsNumber && testSmsNumber.length > 1) {
smsUserList = Arrays.asList(testSmsNumber);
}
}
if (event.getEventTemplate().equalsIgnoreCase(CommunicationConstants.AGENT)) {
String testNumbers = env.getRequiredProperty(CommunicationConstants.TEST_SMS_NUMBRES);
String[] testSmsNumber = testNumbers.split(",");
if (null != testSmsNumber && testSmsNumber.length > 1) {
smsUserList = Arrays.asList(testSmsNumber);
}
}
Set<SMSCommunicationRecipient> smsRecipientAll = event.getSmsCommunicationRecipient();
for (SMSCommunicationRecipient smsRecipient : smsRecipientAll) {
String smsRecipientValue = smsRecipient.getRecipientGroupId().getReferenceTypeValue();
if (smsRecipientValue.equalsIgnoreCase(CommunicationConstants.MEMBER)) {
List<String> memberContact = (List<String>) communicationInput
.get(CommunicationConstants.MEMBER_CONTACT_NUMBER_LIST);
if (CollectionUtils.isNotEmpty(memberContact)) {
for (String smsNumber : memberContact) {
smsUserList.add(smsNumber);
}
}
}
if (smsRecipientValue.equalsIgnoreCase(CommunicationConstants.AGENT)) {
List<String> agentContact = (List<String>) communicationInput
.get(CommunicationConstants.AGENT_CONTACT_NUMBER_LIST);
if (CollectionUtils.isNotEmpty(agentContact)) {
for (String smsNumber : agentContact) {
smsUserList.add(smsNumber);
}
}
}
}
答案 0 :(得分:3)
Arrays.asList(testSmsNumber)
返回固定大小的列表,因此您无法向其中添加元素。
更改
smsUserList = Arrays.asList(testSmsNumber);
到
smsUserList = new ArrayList<>(Arrays.asList(testSmsNumber));
或者,因为您已经使用以下方法创建了ArrayList
:
List<String> smsUserList = new ArrayList<String>();
更改
smsUserList = Arrays.asList(testSmsNumber);
到
smsUserList.addAll(Arrays.asList(testSmsNumber));
尽管您采用第二种方法,但根据您的逻辑,您可能希望在smsUserList.clear()
之前调用smsUserList.addAll()
(因为代码中有多个位置分配给smsUserList
变量,因此您可能希望每次进行分配时都清除List
。