我有一个 ArrayList 作为对象(来自反射),并创建了我自己的类(ArrayListMonitor),它从它扩展出来,每次 arraylist 有一个项目被删除/添加时调用一个函数。但后来我明白了:java.util.ArrayList cannot be cast to ArrayListMonitor 我需要监控数组列表,因为我正在加载一个 jar 并从中创建一个服务器,它有一个我需要监控的客户端字段。
最佳答案
如果 ArrayList
不是 ArrayListMonitor
实例,这将无法工作:
ArrayList<String> a = new ArrayList<String>();
ArrayListMonitor<String> am = (ArrayListMonitor<String>) a; // must throw ClassCastException
如果你想监控数组列表,你有几个选择:
- 写一个像
new ArrayListMonitor(a);
这样的委托(delegate),并为ArrayList
中的所有相关方法创建委托(delegate) - 使用 dynamic proxy监控 ArrayList 的行为
- 使用 AOP 等其他技术
关于java - 覆盖 ArrayList 并将一个转换到该类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7118887/