Pull to refresh

Comments 3

Есть прекрасный тег «хочется странного»;)

А по сабжу — в Java вся эта прелесть реализуется за счет анонимных классов, это не просто перегрузка методов. И от приведённого Вами примера пытаются избавиться с помощью лямбд, либо «классов с одним методом» (простите, запамятовал правильное название). Так стоит ли изобретать то, от чего сторонятся?:)
В java имеет место именно классическая перегрузка (или реализация, в случае с интерфейсом).
Компилятор генерирует специальный отдельный класс и в это место вставляет создание единственного объекта этого класса. Если вы дизассемблируете получившееся Android-приложение, то увидите там классы с именами ClassName и ClassName$1. Так вот ClassName$1 — это как раз autogenerated класс, содержащий метод, переопределенный вами на месте.
Спасибо за разъяснение. Самое смешное, что это делается еще проще. Это реализация из раздела Попытка 1, но с предварительной генерацией класса. Runtime позволяет это сделать очень просто, буквально в две строчки.
Моя же реализация была продиктована банальным желанием переопределять любой метод у уже существующего объекта, и не только созданного мной.

Вопрос в другом, стоит ли делать такую правильную реализацию? Комментарий bsideup поставил меня в тупик. Если сами Java разработчики в своей практике пытаются от этого избавится, то я даже не знаю…

Sign up to leave a comment.

Articles

Change theme settings