У меня есть проект Java, работающий в Eclipse с основным исполняемым файлом, который называется GreatPlaces.java
. В моей папке /bin
я бы предположил, что у меня есть только один файл CLASS с именем GreatPlaces.class
. Тем не менее, у меня их пара, кроме GreatPlaces.class
У меня также есть GreatPlaces$1.class
, GreatPlaces$2.class
... GreatPlaces$22.class
. Может ли кто-нибудь объяснить мне это? Благодарю.Почему у меня так много файлов CLASS в папке bin?
4
A
ответ
4
Внутренние классы если таковые присутствуют в вашем классе будет обобщена и файл класса будет ClassName$InnerClassName
. Включение анонимных внутренних классов будет отображаться как числа.
Пример:
public class TestInnerOuterClass {
class TestInnerChild{
}
Serializable annoymousTest = new Serializable() {
};
}
Классы, которые будут сгенерированные являются:
- TestInnerOuterClass.class
- TestInnerOuterClass $ TestInnerChild.class
- TestInnerOuterCasss $ 1.class
4
Знак доллара используется компилятором для внутренних классов.
$
знак представляет собой внутренние классы. Если у него есть number
после $
, то это анонимный внутренний класс. Если он имеет name
после $
, то это только внутренний класс.
Так что в вашем casese они представляют annonymouse внутренние классы
2
Эти файлы классов соответствуют анонимным внутренним классам, которые вы используете в программе.
Вот пример обработчика событий, который будет скомпилирован в файл .class своих собственных:
button.addActionLister(new ActionListener() {
public void actionPerformed(ActionEvent e) { .... }
});
Вы, вероятно, используете [анонимные классы] (http://docs.oracle.com/javase/ tutorial/java/javaOO/anonymousclasses.html) в вашем коде. – Pshemo
как я могу это узнать? И, кроме того, это как-то вредно для окончательного выпуска проекта? – MichalB
Взгляните на ссылку в моем комментарии. Обычно анонимные классы создаются с помощью 'new SomeClassOrInterface() {дополнительная реализация для SomeClassOrInterface};' – Pshemo