2016-03-29 1 views
2

さて、私は数年前に書いたコードを逆コンパイルしました。だから、私が使用する逆コンパイラは、Javaコンパイラがそれらを別々のクラスとしてコンパイルしているので、匿名クラスを逆コンパイルしません。これらの匿名クラスをJavaでどのように設定するのですか?

私は、TitleScreenという名前のファイルと、それに続くTitleScreen $ 1、TitleScreen $ 2のファイルを持っています。シンプル。しかし....なぜ数字ですか?クラスはintで指定されていませんが、それは不可能です。これらはどのように構成されますか? optionsClick()、worldsClick()のようなランダムな名前を与えるだけですか?

ありがとうございます!

+0

これらは通常内部クラスです – 3kings

+1

"クラスの名前はintではありません。それは不可能です"明示的に 'TitleScreen $ 1'と呼ばれるクラスを定義してみてください。これは有効な(ただし珍しい)名前です。 –

+0

@AndyTurnerああ、ありがとう!それを知らなかった! – AppleBabies

答えて

3

これらは、Javaコンパイラが匿名クラスに対して生成する名前です。

希望する名前を付けてください。

+0

ああ、はい、それは大丈夫と思われました。ネストされたクラスをたくさん使っていて、名前が特定であるかどうかわからなかったので、何年も前から私は確信が持てませんでした。ありがとう! – AppleBabies

1

コンパイラは単なるプログラマよりも強力で、その面白い構文でクラスに名前を付けることができます。おそらく、それはそれが「安全」であることを知っているからです。ユーザー定義クラス(下記のコメントを参照)はその名前を持つ可能性がありません。

デコンパイルされたクラスの名前については、内部クラスの場合はTitleScreen.Anon1、TitleScreen.Anon2、独自のクラスの場合はTitleScreen_Anon1をお勧めします。そうすれば、必要に応じて元のコードに戻って参照することができます。

+0

なぜユーザー定義のクラスにその名前が付いていないのですか? –

+0

OK、わかりやすくしましょう。既知の宇宙のコーディングスタイルガイドの後に続く、まともなユーザー定義クラスはその名前を持つことはできません。 :-) – user949300

+0

s/can/should /、確かに –

関連する問題