2017-04-22 97 views
0

我需要刪除字段在類文件中使用ASM,但是我無法找到任何工作,Java如何使用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 + " ***"); 
    } 
} 

它給了我一個Exeption: DELETED最大 java.util.ConcurrentModificationException

+0

參見[這裏](https://stackoverflow.com/a/223929/5128464)... – vlp

回答

1

刪除在迭代時收集一些東西是個不錯的主意,並且每次會拋出java.util.ConcurrentModificationException

如果您使用Java 8或更新版本,請考慮使用Collection::removeIf並給它一個謂詞lambda以選擇要刪除的項目。

你的情況,這可能工作:

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