java - 覆盖 ArrayList 并将一个转换到该类

标签 java arraylist extends

我有一个 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

如果你想监控数组列表,你有几个选择:

  1. 写一个像 new ArrayListMonitor(a); 这样的委托(delegate),并为 ArrayList 中的所有相关方法创建委托(delegate)
  2. 使用 dynamic proxy监控 ArrayList 的行为
  3. 使用 AOP 等其他技术

关于java - 覆盖 ArrayList 并将一个转换到该类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7118887/

相关文章:

java - ObjectMapper ConvertValue 错误 java.util.ArrayList[0]->java.util.LinkedHashMap ["id"]

java - JAVA读取unicode字符代码

java - 如果我在子类中实现 Comparable 接口(interface),如何使用 Collections.sort() ?

scala - 使用预期类型的​​子参数实现 trait 方法

java - 使用 TCP 的 Ehcache Jgroups 复制在具有 2 节点集群的 AWS 云中不起作用

java - 修改这个 8 谜题代码以打印中间状态以得出解决方案

c# - 如何在程序退出时保存变量值?

java - 流收集方法的有效供应商

java - 在 Java 中使用 extends 会导致封闭实例错误

android - 普通的android view可以用GLSurfaceView扩展吗?