我有一个ArrayList作为对象(从反射),并制作了自己的类,该类从它扩展(ArrayListMonitor),该类每次在arraylist删除/添加项时都调用一个函数。但是然后我得到了:java.util.ArrayList无法强制转换为ArrayListMonitor
我在加载jar并从中创建服务器时需要监视arraylist,该服务器具有我需要监视的client字段。

最佳答案

如果ArrayList不是实例ArrayListMonitor的实例,则无法使用:

ArrayList<String> a = new ArrayList<String>();
ArrayListMonitor<String> am = (ArrayListMonitor<String>) a; // must throw ClassCastException


如果要监视阵列列表,则有以下几种选择:


编写类似于new ArrayListMonitor(a);的委托,并为ArrayList中的所有相关方法创建委托
使用dynamic proxy监视ArrayList的行为
使用其他技术,例如AOP

09-30 11:41