![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
4epT |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 784 Регистрация: 13.8.2007 Репутация: нет Всего: 3 |
Подскажите пожалуйста есть ли в Java аналог делегатам из C# ? делегат на сколько я помню это указатель на функцию =)
|
|||
|
||||
4EJIOBEK |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 95 Регистрация: 26.3.2007 Репутация: нет Всего: 4 |
нет
|
|||
|
||||
ivanovpv |
|
|||
![]() Варвар ![]() ![]() Профиль Группа: Участник Сообщений: 639 Регистрация: 26.1.2005 Где: Москва Репутация: 4 Всего: 28 |
И нет и да. Нет потому что в Java нет указателей (в смысле C/C++), да потому что в Java непримитивные объекты передаются фактически по ссылке (тот же самый указатель, но без пойнтерной арифметики). Так что, если инкапсулировать функцию в класс (де факто любая функция инкапсулирована в какой-то класс) и передавать/хранить ссылку на объект, то всегда можно иметь аналог указателя на функцию. Только надо знать имя функции. Даже если имя функции неизвестно, то можно воспользоваться Java reflection - для извлечения нужной функции из малопонятного объекта. В свое время я переписывал код с С на Java. В сишном коде в лучших традициях Кернигана и Риччи все было исполнено с массированным применением пойнтерной арифметики с указателями на функции и проч. В итоге комбинацией инкапсулирования + рефлексией я переписал непростой код. Так что все возможно. -------------------- Aut viam inveniam aut faciam |
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 3 Всего: 17 |
||||
|
||||
fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
C#-делегаты в java почти полностью можно сэмулировать интерфейсами с одним методом и их анонимными реализациями.
-------------------- ![]() |
|||
|
||||
ivanovpv |
|
|||
![]() Варвар ![]() ![]() Профиль Группа: Участник Сообщений: 639 Регистрация: 26.1.2005 Где: Москва Репутация: 4 Всего: 28 |
-------------------- Aut viam inveniam aut faciam |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |