var x = 0; var y = 0; document.addEventListener ('mousemove', onMouseMove, false) function onMouseMove (e) {x = e.clientX; y = e.clientY; } function getMouseX () {return x; } function getMouseY () {return y; }
Внутренние классы, если они есть в вашем классе, будут скомпилированы, а файл класса будет ClassName$InnerClassName
. В случае анонимных внутренних классов он будет отображаться как числа. Размер класса (код Java) не приводит к генерации нескольких классов.
Например. с учетом этой части кода:
public class TestInnerOuterClass {
class TestInnerChild{
}
Serializable annoymousTest = new Serializable() {
};
}
Классы, которые будут сгенерированы, будут:
TestInnerOuterClass.class
TestInnerOuterClass$TestInnerChild.class
TestInnerOuterCasss$1.class
Обновление:
Использование анонимного класса не считается плохой практикой, оно просто зависит от использования.
] Проверьте обсуждение на SO
Это потому, что у вас есть анонимные классы в этом более крупном классе. Они компилируются с использованием этого соглашения об именах.
В дополнение к вышеуказанным случаям, представленным @mprabhat, другие случаи могут быть:
Эти случаи являются выводами моей проверки на файлы .class в банке.
Чтобы ответить на ваш комментарий, анонимные классы плохо. Их больше всего нет. Рассмотрим это, чтобы назначить прослушиватель действий JButton:
JButton button = new JButton(...);
button.addActionListener(new ActionListener() { ... });
или это сделать нечувствительный к регистру сортировку с помощью свойства «name»
Collections.sort( array, new Comparator<Foo>() {
public int compare(Foo f1, Foo f2) {
return f1.getName().toLowerCase().compareTo(f2.getName().toLowerCase());
}
});
. Вы также увидите много Runnable и Callable сделано как анонимные классы.