最近做的android项目经常用到反射等内容,在加入混淆之后,会发生可多问题。以下是其中混淆过滤泛型的一个问题,现提供解决方法。
1.部分代码:
if (List.class.isAssignableFrom(paramField.getType())) {
ParameterizedType subTableParameterizedType = (ParameterizedType)paramField.getGenericType();
paramField.set(tempObject,
changeJSONArrayTOBusinessVOList(sourceJSONObject.getJSONArray(fieldName),
(Class)subTableParameterizedType.getActualTypeArguments()[0]));
}
2.执行部分异常如下:
java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
3.说明:
该段代码的意图是对象字段中如果存在List泛型的字段,取出泛型对象并处理反射其数据。
4.相应处理
混淆文件已经对反射的对象进行过滤,针对以上异常处理如下:
在混淆文件中加入:
#过滤泛型
-keepattributes Signature
即可。