次の「キープ」ルールをプロガード構成に入れると:
-keepclasseswithmembernames class ** implements com.my.package.MyInterfaceName { <fields>; }
最初は、 MyInterfaceName を実装するすべてのクラスがクラス名を取得し、フィールドが変更されないように見えます。
しかし、実際に実行すると、これらのクラスは getSimpleName() で別の単純な名前を返します。
たとえば、次のようにします。
public class Foo {
public enum Bar implements MyInterfaceName { X, Y, Z }
}
X.getClass().getSimpleName()
プロガードによって処理されずに返されるものFoo$Bar
だけではなく、返されます。Bar