我需要一种方法来删除java类的Enum中声明为Enumerable
的数组项:
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))
}
中删除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);
无效,您能帮我吗?
谢谢
答案 0 :(得分:0)
很难说出您是否没有得到的错误,也没有一个简单,完整和可验证的示例。
无论如何,该错误可能是因为您试图删除不可变的List
的元素。
当您使用List
创建一个Arrays.asList
时,得到的是一个不可变的列表,并且如果您尝试调用方法remove(10)
,则会抛出java.lang.UnsupportedOperationException
异常。 / p>
因此,可能需要在Procedure
构造函数中进行一些更改,以使这些列表可变。一种方法是从不可变的List
创建一个新的Procedure(List<FileType> optionalFileTypes /* other arguments */) {
this.optionalFileTypes = new ArrayList(optionalFileTypes);
// other constructor code
}
。看起来类似于:
{
"jwt": "MY_TOKEN"
}
答案 1 :(得分:-2)
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)))}