![]() |
|
Модераторы: javastic, AntonSaburov |
![]()
|
|
| W0LF |
|
||||||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Допустим есть какой-то класс.
есть еще класс.
Классы разные, по разному работают но у них есть метод func в другом каком-нидь классе делаем :
так вот вопрос - как теперь у объекта о вызвать метод func? Примечание - мы не знаем, на какой объект ссылается в данный момент о. то ли на А то ли на В поэтому не можем его привести к классу А или классу В. Решение с интерфейсом не подходит! -------------------- iOS developer |
||||||
|
|||||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: нет Всего: 159 |
а оператор instanceof не поможет?
хотя, поскольку и Класс А и Класс В содержит метод func(), то можно приводить всегда к А, метод все равно вызовется класса В, ибо динамический поиск определяет метод по реальному типу объекта а не по типу ссылки.... |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 1 Всего: 538 |
Так B не унаследован от A, будт ClassCastException. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: нет Всего: 159 |
Опа! Точно.. не заметил... |
|||
|
||||
| W0LF |
|
||||||||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
таких классов как А и В может быть очень много(это разные формы в приложении), поэтому не подходит много if делать, а потом еще и код править для добавления их... То-есть напрямую никак нельзя по ссылке привести к этому классу? Добавлено @ 20:06 Я конечно могу сделать два базовых класса, котрые делятся на Form и List. а от них уже наследовать все остальное. Тогда прокатит -
Но просто именно от этого кода я щас и пытаюсь избавиться Это сообщение отредактировал(а) W0LF - 4.11.2006, 20:04 -------------------- iOS developer |
||||||||
|
|||||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 1 Всего: 538 |
К какому этому? ;) Интерфейс именно для того и нужен, чтобы гарантировать что в классе есть метод с заданное сигнатурой. И в подобных случаях он очень хорошо подходит. Не понимаю почему ты не хочешь его использовать. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: нет Всего: 159 |
||||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
с интерфейсами получается. просто класс+интерфейс = +50 байт памяти
-------------------- iOS developer |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 1 Всего: 538 |
1. По моему даже для J2ME 50 байт это не такая уж и большая потеря.
2. Интерфейс будет существовать в единственном экземпляре, а увеличение размера класса от реализации интерфейса у меня получилось - 26 байт. 3. Сколько ты потеряешь на if-ах. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Да, действительно, мой интерфейс - 26 байт. КоммандЛистенер дает +50 байт.
а что касается ифов, то инода наших американских друзей очень трудно убедить, что ифы эт хорошо, и что много КоммандЛистенеров это тож хорошо -------------------- iOS developer |
|||
|
||||
| javastic |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1214 Регистрация: 18.3.2005 Где: St.Petersburg Репутация: 19 Всего: 27 |
А почему бы не сделать атрибут в каждом из классов (например А и Б), который бы выглядел например как :
-------------------- 01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011 scjp, mcp |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 1 Всего: 538 |
А смысл? Проблема же в том как вызвать метод, с наименьшими затратами. На крайний случай getClass().getName() даст такой же эффект. И опять же объем. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
ага Ну да ладно. Придется сделать два базовых класса. включить туда func(). и делать
Спасибо всем за помощь! З.Ы. Просто хотел сделать че-то типа такого : ((o.getClass())o).func() строго за это не судите Это сообщение отредактировал(а) W0LF - 6.11.2006, 15:46 -------------------- iOS developer |
|||
|
||||
![]()
|
FAQ раздела лежит здесь! |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |