Несколько скомпилированных экземпляров одной и той же программы Java

Возможный дубликат:
Java Class Files имя файла$1 .class… и т. д. Вопрос

Я написал пакетный файл для компиляции java-программы и ее выполнения. Когда я открываю местоположение файла (через графический интерфейс), я вижу много файлов .class одного и того же файла.

Например, скажем, у меня есть файл с именем «acView.java».

Я вижу 3 скомпилированных файла .class - "acView$1.class", "acView$2.class" и "acView.class"

Что означают 1 и 2 доллара? Почему они присутствуют?

Файл .java представляет собой JFrame, если это важно.


person Karthik Balakrishnan    schedule 19.12.2012    source источник


Ответы (1)


$1 просто означает, что класс является классом anonymous, а число 1 генерируется компилятором. Когда у вас есть два анонимных класса, в скомпилированных классах будет что-то вроде YourClass$1.class и YourClass$2.class.

Из вашего кода я полагаю, что вы реализуете некоторые Listener анонимно.

Если вы не хотите, чтобы компилятор генерировал несколько классов, вы перемещаете код в обычный класс.

person Pau Kiat Wee    schedule 19.12.2012
comment
Не могли бы пояснить немного больше или дать ссылку с подробной информацией? Да! Я реализую clickListener для кнопки. Итак, чем больше слушателей, тем больше анонимных классов? - person Karthik Balakrishnan; 19.12.2012
comment
@Torcellite Правильно, скорее всего, вы реализуете анонимно. - person Pau Kiat Wee; 19.12.2012
comment
Есть ли способ избежать этого? - person Karthik Balakrishnan; 19.12.2012
comment
Да, не определяйте классы, относящиеся к классу верхнего уровня. Но реальный вопрос в том, почему вы хотите избежать этого. - person alphazero; 19.12.2012
comment
Просто любопытство. Я хотел знать, есть ли решение. - person Karthik Balakrishnan; 19.12.2012
comment
@Torcellite вообще не проблема, потратьте больше времени на другие ошибки :) - person Pau Kiat Wee; 19.12.2012