为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻翻过去那场雪 2021-11-17 15:43:22
我需要一种方法来删除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不起作用,你能帮我解决这个问题吗?谢谢
查看完整描述

2 回答

?
米脂

TA贡献1836条经验 获得超3个赞

很难判断您是否没有提供您得到的错误,也没有提供一个最小的、完整的和可验证的示例。


无论如何,错误可能是因为您试图删除不可变的元素List。


当你创建一个List与Arrays.asList你得到的是一个不可改变的列表,如果你试图调用该方法remove(10)一java.lang.UnsupportedOperationException会抛出异常。


因此,您可能需要在Procedure构造函数中进行一些更改以使这些列表可变。一种方法是List从不可变的创建一个新的。它看起来类似于:


Procedure(List<FileType> optionalFileTypes /* other arguments */) {

    this.optionalFileTypes = new ArrayList(optionalFileTypes);

    // other constructor code

}


查看完整回答
反对 回复 2021-11-17
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

Arrays.asList()不支持像 add(),addAll(),remove(),removeAll() 这样的操作,因为它返回不可变列表。您需要将任何需要修改的列表包装在ArrayList<>(). 尝试如下:


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



查看完整回答
反对 回复 2021-11-17
  • 2 回答
  • 0 关注
  • 164 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信