在列表中获取java.lang.UnsupportedOperationException

时间:2018-07-25 11:10:03

标签: java

我得到了

  

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);
                }
            }
        }
    }

1 个答案:

答案 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