gpt4 book ai didi

Java 如何使用 ASM 删除字段?

转载 作者:行者123 更新时间:2023-12-02 13:20:57 24 4
gpt4 key购买 nike

我需要使用 ASM 删除类文件中的字段,但我找不到任何有效的内容,

for(FieldNode field : classNode.fields) {
if(field.name.equals("max") && field.value.equals(30)) {
classNode.fields.remove(field);
System.out.println("***DELETED " + field.name + " ***");
}
}

它给了我一个异常(exception):删除次数上限java.util.ConcurrentModificationException

最佳答案

在迭代 Collection 时从 Collection 中删除某些内容是一个坏主意,并且每次都会抛出 java.util.ConcurrentModificationException

如果您在 Java 8 或更高版本上运行,请考虑使用 Collection::removeIf并给它一个谓词 lambda 来选择要删除的项目。

在您的情况下,这可能有效:

classNode.fields.removeIf(field -> field.name.equals("max") && field.value.equals(30));

关于Java 如何使用 ASM 删除字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43562564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com