|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.08.2010, 19:05 | #1 |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
динамическое приведение типов в java
в С++ есть функция dynamic_cast, позволяющая приводить объекты базового класса к классу-наследнику. Как можно выполнять такие действия в java? Нужно покастить List<Object> к ArrayList<Integer>.
|
26.08.2010, 20:20 | #2 |
Новичок
Джуниор
Регистрация: 26.08.2008
Сообщений: 1,010
|
Дженерики кастовать нельзя, разве что к подклассам.
т.е. List<Integer> можно кастануть к List<Number>, но не наоборот. как вариант можно выдернуть все элементы, кастануть явно(через "()" ) и потом запихнуть в новый список.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими. |
26.08.2010, 23:52 | #3 |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
хорошо. А если мы имеем базовый класс, класс наследник, в котором определена некая специфичная для него функция, и некоторый интерфейс, принимающий параметром ссылку на объект базового класса. И мы хотим передавать в этот интерфейс объект класса-наследника и вызывать там эту специфичную функцию.
Код:
|
27.08.2010, 09:37 | #4 | |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
sashonk так можно. Эта сигнатура
Код:
Так правильнее будет: Цитата:
Последний раз редактировалось profi; 27.08.2010 в 09:49. |
|
27.08.2010, 10:33 | #5 |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
вы привели типичный пример вызова виртуальной функции класса. Я же говорил о вызове метода, специфичного для класса наследника. В моем примере foo() в базовом классе отсутствует
|
27.08.2010, 10:37 | #6 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Только так можно:
Код:
|
27.08.2010, 12:03 | #7 |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
Я это уже понял. Спасибо
|
27.08.2010, 20:05 | #8 |
Новичок
Джуниор
Регистрация: 26.08.2008
Сообщений: 1,010
|
нет, не только.
Код:
да и еще, надо делать проверку на возможность кастования: Код:
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими. Последний раз редактировалось alexinspir; 27.08.2010 в 20:08. |
27.08.2010, 22:54 | #9 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
alexinspir не вижу большой разницы. Та и вообще ТС не советовал бы интересоваться кодом такого типа .
Последний раз редактировалось profi; 27.08.2010 в 23:00. |
28.08.2010, 19:52 | #10 | |
Новичок
Джуниор
Регистрация: 26.08.2008
Сообщений: 1,010
|
Цитата:
операции типа Код:
хотите пример? swing: component.getParent() - возвращает Container. при том не ясно что это - Panel или Window и тд и тп. для выяснения использют instanceof, и для доступа к специфичным функциям кастуют к необходимому типу. з.ы. profi ознакомьтесь с рефлексией, наверняка откроете много нового для себя
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Приведение типов в Qt | mike_tihomirov | Qt и кроссплатформенное программирование С/С++ | 1 | 19.06.2010 13:14 |
Приведение типов... В чем отличия? | Gtx541 | Общие вопросы C/C++ | 1 | 16.06.2010 19:54 |
Приведение типов для SQL-запроса | Rio309 | БД в Delphi | 1 | 06.06.2010 13:39 |
Cтроки. Приведение типов. char * to float | Aerial | Общие вопросы C/C++ | 3 | 28.04.2010 14:54 |
Приведение типов массива объектов | Arnezami | Общие вопросы .NET | 3 | 17.12.2009 11:30 |