最近在学习使用AsyncTask,想用多态的思想使用即:编译类型不等于运行时类型(编译类型必须是运行时类型的父类或者运行时类型实现了编译类型接口)
private AsyncTask mCacheTask = new CacheTask();
结果出现了java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.lang.Void[] 异常信息。
针对这种情况有两种解决方法:
1、不使用多态的方法 即让 编译类型等于运行时类型。
CacheTask mCacheTask = new CacheTask();
2、继续使用多态,不过这时候就需要将声明的类型信息写全:
mCacheTask = new CacheTask();
AsyncTask<String, Void, ListEntity<T>> mCacheTask = new CacheTask();
这样就不会出现异常。