[英]How to remove Array list from Enumeration in Java
我需要一种方法来删除java类的Enum中声明为Filetype
数组项:
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))
}
所以我需要从PROCEDUREF
删除FileType.TEST10
。 我创建了一个类来实现此枚举:
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
无法正常工作,您能帮我吗? 谢谢
很难说出您是否没有得到的错误,也没有一个简单,完整和可验证的示例。
无论如何,该错误可能是因为您试图删除不可变List
的元素。
当您使用Arrays.asList
创建一个List
,您得到的是一个不可变的列表,并且如果您尝试调用remove(10)
方法,则会抛出java.lang.UnsupportedOperationException
异常。
因此,可能需要在Procedure
构造函数中进行一些更改,以使这些列表可变。 一种方法是从不可变List
创建一个新List
。 它看起来类似于:
Procedure(List<FileType> optionalFileTypes /* other arguments */) {
this.optionalFileTypes = new ArrayList(optionalFileTypes);
// other constructor code
}
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)))}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.