CFRを使用しましたが、出力は良好に見えます。ジェネリックスを理解し、フォーマットはクリーンです。命名(ローカル変数)がより良いかどうかはわかりません。命名の問題を示す例を次に示します。
java.util.ArrayDequeue(
private void doubleCapacity(){int n; assert(this.head == this.tail); int n2 = this.head; int n3 = this.elements.length; int n4 = n3-n2; if((n = n3 << 1)< 0){throw new IllegalStateException( "Sorry、 deque too big ");} Object [] arrobject = new Object [n]; System.arraycopy(this.elements、n2、arrobject、0、n4); System.arraycopy(this.elements、0、arrobject、n4、n2 ); this.elements = arrobject; this.head = 0; this.tail = n3;}
オリジナルと比較
private void doubleCapacity( ){assert head == tail; int p = head; int n = elements.length; int r = n --p; // pの右側の要素数intnewCapacity = n << 1; if(newCapacity < 0)新しいスローIllegalStateException( "申し訳ありませんが、両端キューが大きすぎます"); Object [] a = new Object [newCapacity]; System.arraycopy(elements、p、a、0、r); System.arraycopy(elements、0、a、r、p);要素=(E [])a;ヘッド= 0; tail = n;}
コンテキストベースの名前を取得することは、ほとんどの逆コンパイラーの範囲外です。
作成者は友人のプロジェクト procyonにリンクしています。 、オープンソース。 独自の比較ページがあります。ページから...
Procyonデコンパイラーは、Java 5以降の言語拡張を処理し、他のほとんどのデコンパイラーは処理しません。また、他の人が不足している分野でも優れています。特にProcyonは、以下でうまく機能します。
列挙型declarationsEnumおよびStringswitchステートメント(これまでのところjavac 1.7に対してのみテスト済み)ローカルクラス(匿名と名前付きの両方)アノテーション
Java 8ラムダとメソッド参照(つまり、::演算子)。