请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么不加-keepattributes Signature,混淆后也能正确获取到泛型的类型,如下面的注释部分?

public abstract class GenericClass<T> {
    Class<T> type;

    public GenericClass() {
        this.type = (Class<T>) getClass();
    }

    public List<Map<T, T>> getValue() {
        return null;
    }
}
private void getGenericsArguments() {
        // 匿名内部类
        GenericClass<String> genericClass = new GenericClass<String>() {
            @Override
            public List<Map<String, String>> getValue() {
                return null;
            }
        };

        ParameterizedType superType = (ParameterizedType) genericClass.getClass().getGenericSuperclass();
        for (Type actualTypeArgument : superType.getActualTypeArguments()) {
            System.out.println(TAG + " Superclass + actualTypeArgument: " + actualTypeArgument);
            // GenericTest Superclass + actualTypeArgument: class java.lang.String
        }

        try {
            ParameterizedType methodType = (ParameterizedType) genericClass.getClass().getMethod("getValue").getGenericReturnType();
            for (Type actualTypeArgument : methodType.getActualTypeArguments()) {
                System.out.println(TAG + " Method + actualTypeArgument: " + actualTypeArgument);
                // GenericTest Method + actualTypeArgument: java.util.Map<java.lang.String, java.lang.String>
            }
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
    }

正在回答

1回答

那应该是其他的混淆选项包含了keep attributes。

你可以找个class阅读器打开混淆后的class文件,看下,应该是泛型信息没有被混淆掉。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号