Передача ссылки на метод конструктору объектовJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Передача ссылки на метод конструктору объектов

Сообщение Anonymous »

Я чувствую, что что-то упускаю, когда дело касается статически типизированных языков. Когда я практически только использовал Perl, у меня было много способов указать объекту, какую функцию вызывать.
Теперь, когда я работаю на Java, я не понимаю, как можно легко сделать что-то подобное.
У меня есть общий класс Button. Это подкласс всех реальных кнопок, которые будут использоваться: каждая из них имеет свой метод для вызова при нажатии.
Неужели нет способа передать ссылку на метод, который будет вызываться при нажатии, чтобы я мог использовать один класс для всех кнопок?
В настоящее время я создаю такие кнопки:

Код: Выделить всё

// Specifically using the subclass that sets "firemode" to "close"
FiremodeClose fc = new FiremodeClose(Settings.ui_panel_start, Settings.ui_panel_row_firemode, game);
painter.addSelectionButton(fc);
clickTracker.addSelectionButton(fc);
Это, конечно, приводит к появлению множества подклассов, каждый из которых отличается только размещением, меткой/графикой и вызовом метода. Разумнее сделать что-то подобное:

Код: Выделить всё

// Generic button, the method that sets "firemode" is somehow passed as argument to the constructor.
Button fc = new Button(&referenceToFunctionToCallWhenClicked, otherArgumentsEtc);
painter.addSelectionButton(fc);
clickTracker.addSelectionButton(fc);
Как я уже сказал, я чувствую, что что-то упускаю, потому что имеет смысл, что должен быть способ добиться этого, что позволит мне обойтись только одним классом Button без каких-либо подклассов.>

Подробнее здесь: https://stackoverflow.com/questions/391 ... onstructor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»