简体   繁体   English

ProGuard可以使子类的字段名称与超类不同

[英]Can ProGuard make subclass' field name differ to superclass'

Suppose I have these classes: 假设我有这些课程:

public class Superclass {
    private int intValue;
}

public class Subclass extends Superclass {
    private String stringValue;
}

ProGuard may obfuscate them to be: ProGuard可能会将它们混淆为:

public class A {
    private int a;
}

public class B extends A {
    private String a;
}

Can I make Ba become another name not exists in its superclass, eg Bb ? 我可以使Ba成为其超类中不存在的另一个名称,例如Bb吗? My classes are about to be used in serialization (JSON), stored locally so that I don't need the original field name, just need them to be different. 我的类将用于本地化的序列化(JSON)中,因此我不需要原始的字段名称,只需要它们不同即可。

As far as I know, you should keep the classes used in serialization. 据我所知,您应该保留用于序列化的类。 Processing serializable classes suggests that you should write something like: 处理可序列化的类建议您编写以下内容:

 -keepclassmembers class * implements java.io.Serializable { 
 private static final java.io.ObjectStreamField[] serialPersistentFields; 
 private void writeObject(java.io.ObjectOutputStream); 
 private void readObject(java.io.ObjectInputStream); 
 java.lang.Object writeReplace(); 
 java.lang.Object readResolve(); 
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM