開発用IDEとしてEclipseを使用しています。また、アプリケーションを.jarファイルにエクスポートするためにも使用します。私のクラスを.jarファイルで見ると、クラスのいくつかにそのクラスの名前、ドル記号、数字が含まれています。例:Javaコンパイルされたクラスにドル記号が含まれています
- は$ 1.class
- は$ 2.class
- が、私はそれがより大きなクラスでこれを行い気づいた
Find.class $ 3.class
開発用IDEとしてEclipseを使用しています。また、アプリケーションを.jarファイルにエクスポートするためにも使用します。私のクラスを.jarファイルで見ると、クラスのいくつかにそのクラスの名前、ドル記号、数字が含まれています。例:Javaコンパイルされたクラスにドル記号が含まれています
Find.class $ 3.class
クラス内のクラスが存在する場合は、内部クラスがコンパイルされ、クラスファイルはClassName$InnerClassName
になります。匿名の内部クラスの場合は、数字として表示されます。クラス(Javaコード)のサイズは複数のクラスの生成につながりません。
など。
public class TestInnerOuterClass {
class TestInnerChild{
}
Serializable annoymousTest = new Serializable() {
};
}
生成されるクラスであろう:コードのこの部分所与
TestInnerOuterClass.class
TestInnerOuterClass$TestInnerChild.class
TestInnerOuterCasss$1.class
を更新:
匿名クラスの使用は悪い習慣とはみなされません。使用方法によって異なります。あなたはこの大きなクラス内の匿名クラスを持っているので、
チェックのthis議論は、SO
です。これらは、この命名規則を使用してコンパイルされます。
についてコメントを答えるためにThe Anonymous Class Conundrum
を参照してください、匿名クラスが悪いです。彼らは確かにそうではありません。 JButtonのにアクションリスナーを割り当てるには、これを 考えてみましょう:
JButton button = new JButton(...);
button.addActionListener(new ActionListener() { ... });
または、この「名前」プロパティ
Collections.sort(array, new Comparator<Foo>() {
public int compare(Foo f1, Foo f2) {
return f1.getName().toLowerCase().compareTo(f2.getName().toLowerCase());
}
});
で大文字小文字を区別しないソートを行うためにあなたはまた、Runnableを多くのを見ることができますし、匿名クラスとして呼び出すことができます。
@mprabhatによって提示された上記の例に加えて、他の例は次のようになります。
これらのケースは、jarの.classファイルに関する私の検査の派生物です。
私はこれらの基準のどれにも合致しないクラスを持っており、class.getName()はまだ間違っています - Group.javaの場合、Group _ $$ _ jvst248_20を返します。私は何が起こっているのか分かりません。間違いなく列挙型、拡張、実装。 – Amalgovinus
匿名のクラスを持つのは悪いですか?私はそれがどのように機能するのかよく分かりません。クラスの新しいインスタンス変数をクラスに作成すると、それは匿名クラスですか? – Frizinator
いいえ、匿名のクラスを持つことは悪くない、それは使用法によって異なります。私の投稿を更新しました – mprabhat
クラス本体を含む列挙型は、列挙型クラスを拡張する匿名の内部クラスを自動的に生成し、それで$を持つ別のクラスファイルを生成します。 – dlaidlaw