シリアル化
アプリケーションがまったく新しいアプリケーションである場合、つまり、アプリケーション内に既存のシリアル化されたオブジェクトがない場合には、シリアル化は問題にならないかもしれません。PreEmptive Protection - DashO が難読化する前にシリアル化されたクラスは、難読化後も依然としてシリアル化されます。
既に持続的なオブジェクトが存在する場合は、DashO を実行する前に、それらのオブジェクトがどのクラスから作成されたかを識別する必要があります。メソッド/フィールドの除去と名前の変更は、これらのオブジェクトの再読み込みを不可能にします。簡単な解決法は、無条件にクラスを対象選択することです。そこに、シリアル化されるオブジェクトをすべて列挙します。
DashO は、バージョン間の互換性を容易にするために、serialVersionUID
という名前を持つフィールドを自動的にそのまま(除去も名前の変更もしない)にしておきます。さらに、シリアル化可能なフレームワークの readObject()
、writeObject()
、writeReplace()
、または readResolve()
メソッドが使用されている場合は、DashO は自動的にそれらをエントリ ポイントとして扱います。