getGenericType()返回java.lang.Class的实例,而不是类型
我对proguard和一些反思的东西有意见 Myclass.javagetGenericType()返回java.lang.Class的实例,而不是类型,java,android,generics,reflection,proguard,Java,Android,Generics,Reflection,Proguard,我对proguard和一些反思的东西有意见 Myclass.java package not.obfuscated class MyClass { public List<InnerClass> childs; } package not.obfuscated class InnerClass { //.somestuff } 在proguard.cfg中,我有: -keep class not.obfuscated.** {*;} 在另一个类中,我设法获取My
package not.obfuscated
class MyClass {
public List<InnerClass> childs;
}
package not.obfuscated
class InnerClass {
//.somestuff
}
在proguard.cfg中,我有:
-keep class not.obfuscated.** {*;}
在另一个类中,我设法获取MyClass.childs字段的“Field”实例,然后尝试获取getGenericType以确定哪个类位于列表括号内(ParameterizedType listType = (ParameterizedType) field.getGenericType();
我收到一个ClassCastException:
java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
我坚信这是由于proguard,但据我所知,proguard已经排除了not.obfuscated包中的所有类。作为最后一次尝试,我还插入了一行-keep class java.lang.List(显然没有发生任何事情)。默认情况下,Proguard会删除一些类型信息: 添加以下行可以解决此问题:
-keepattributes Signature
可能整个魔线都会起作用,即:
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keepattributes Annotation-keepattributes SignatureHello,我已经在我的proguard顶部添加了keepattributes,但它不起作用-keepattributes Signature我必须提到我还有另一个-keepattributes属性。嘿,可能它切断了关于内部类的信息-我已经更新了一整行-希望这会有所帮助。@AndreyChaschev you save my life:)。非常感谢。修复了我的改装和rxjava项目。干杯
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod