如何从 Java 中的枚举中删除数组列表

我需要一种方法来删除Filetype在 java 类中声明为Enum 内部的数组项:


public enum Procedure {

    NONE("NONE", "procedure.none", false, null, Collections.<FileType> emptyList(), Collections.<FileType> emptyList()), 

    PROCEDUREF("PROCEDUREF", "procedure.procedureD", false, null, Arrays.asList(FileType.REQUEST), Arrays.asList(FileType.TEST1, FileType.TEST2,FileType.TEST3,FileType.TEST4,FileType.TEST5, FileType.TEST6,FileType.TEST7, FileType.TEST8, FileType.TEST9,FileType.TEST10, FileType.TEST11))

}

所以我需要FileType.TEST10从PROCEDUREF. 我创建了一个类来实现这个枚举:


public class FormObject {

    private static final List<Procedure> GUI_PROCEDURES = Arrays.asList(Procedure.NONE, Procedure.PROCEDUREF);


    public List<Procedure> getProcedures() {

        if (userdetail.ispilot()) {        

            GUI_PROCEDURES.get(1).getOptionalFileTypes().remove(10);

            return GUI_PROCEDURES;

        } 

    }

这个GUI_PROCEDURES.get(1).getOptionalFileTypes().remove(10);删除说明FileType.TEST11不起作用,你能帮我解决这个问题吗?谢谢


翻翻过去那场雪
浏览 165回答 2
2回答

米脂

很难判断您是否没有提供您得到的错误,也没有提供一个最小的、完整的和可验证的示例。无论如何,错误可能是因为您试图删除不可变的元素List。当你创建一个List与Arrays.asList你得到的是一个不可改变的列表,如果你试图调用该方法remove(10)一java.lang.UnsupportedOperationException会抛出异常。因此,您可能需要在Procedure构造函数中进行一些更改以使这些列表可变。一种方法是List从不可变的创建一个新的。它看起来类似于:Procedure(List<FileType> optionalFileTypes /* other arguments */) {&nbsp; &nbsp; this.optionalFileTypes = new ArrayList(optionalFileTypes);&nbsp; &nbsp; // other constructor code}

阿波罗的战车

Arrays.asList()不支持像 add(),addAll(),remove(),removeAll() 这样的操作,因为它返回不可变列表。您需要将任何需要修改的列表包装在ArrayList<>(). 尝试如下:public enum Procedure {&nbsp; &nbsp; NONE("NONE", "procedure.none", false, null, Collections.<FileType> emptyList(), Collections.<FileType> emptyList()),&nbsp;&nbsp; &nbsp;PROCEDUREF("PROCEDUREF", "procedure.procedureD", false, null, Arrays.asList(FileType.REQUEST), new ArrayList<>(Arrays.asList(FileType.TEST1, FileType.TEST2,FileType.TEST3,FileType.TEST4,FileType.TEST5, FileType.TEST6,FileType.TEST7, FileType.TEST8, FileType.TEST9,FileType.TEST10, FileType.TEST11)))}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java