[英]How to remove Array list from Enumeration in Java
I need a way to remove array item declared as Filetype
inside Enum in java class: 我需要一种方法来删除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))
}
So I need to remove FileType.TEST10
from PROCEDUREF
. 所以我需要从
PROCEDUREF
删除FileType.TEST10
。 I created a class to implement this enumeration: 我创建了一个类来实现此枚举:
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;
}
}
This instruction GUI_PROCEDURES.get(1).getOptionalFileTypes().remove(10);
此指令
GUI_PROCEDURES.get(1).getOptionalFileTypes().remove(10);
to remove FileType.TEST11
didn't work, could you please help me with this ? 删除
FileType.TEST11
无法正常工作,您能帮我吗? Thanks 谢谢
It is hard to tell if you don't provide the error you are getting nor a minimal, complete and verifiable example. 很难说出您是否没有得到的错误,也没有一个简单,完整和可验证的示例。
Anyway, the error could be because you are trying to remove an element of an immutable List
. 无论如何,该错误可能是因为您试图删除不可变
List
的元素。
When you create a List
with Arrays.asList
what you get is an immutable list and if you try to call the method remove(10)
a java.lang.UnsupportedOperationException
exception will be thrown. 当您使用
Arrays.asList
创建一个List
,您得到的是一个不可变的列表,并且如果您尝试调用remove(10)
方法,则会抛出java.lang.UnsupportedOperationException
异常。
So probably you need to do some changes in your Procedure
constructor to make those lists mutable. 因此,可能需要在
Procedure
构造函数中进行一些更改,以使这些列表可变。 One way to do it is to create a new List
from the immutable one. 一种方法是从不可变
List
创建一个新List
。 It would look similar to this: 它看起来类似于:
Procedure(List<FileType> optionalFileTypes /* other arguments */) {
this.optionalFileTypes = new ArrayList(optionalFileTypes);
// other constructor code
}
Arrays.asList()
doesn't support operations like add(),addAll(),remove(),removeAll() since it returns immutable list. Arrays.asList()
不支持add(),addAll(),remove(),removeAll()之类的操作,因为它返回不可变的列表。 You need to wrap any list which requires modification with ArrayList<>()
. 您需要包装任何需要使用
ArrayList<>()
进行修改的列表。 Try out something like below : 试试下面的方法:
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.