gpt4 book ai didi

Java如何知道谁在修改ArrayList?

转载 作者:行者123 更新时间:2023-12-01 08:51:55 25 4
gpt4 key购买 nike

有没有办法在 Iterator.next() 发生 ConcurrentModificationException 时打印出谁正在修改 ArrayList

最佳答案

如果这只是为了调试和临时故障排除,我可以建议使用动态java.lang.reflect.Proxy。如果您控制 ArrayList 的创建,这将起作用。使用代理,您可以拦截迭代器的创建并为其创建代理。

基本上,在代理拦截的每个方法之前和之后添加日志记录。然后您可以分析日志以查看方法调用的流程。要了解如何创建代理,有很多很棒的博客和示例,但我建议您从 Java Reflection Guide at Oracle Docs 开始。那里有一个与您需要的非常相似的示例。

HTH。

更新:当然,代理只能与接口(interface)一起使用,即仅当您在代码中不严格引用 ArrayList 时(实例化它除外)。否则,您需要重构代码以在声明中使用 List 而不是 ArrayList...

关于Java如何知道谁在修改ArrayList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42333478/

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