Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> type casting Vector, приведение типов Vector 
:(
    Опции темы
sneer
Дата 25.11.2008, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 13.10.2008

Репутация: нет
Всего: нет



Скорее всего что-то из базового но гугл не помог а книги под рукою нет. Есть Jcomponent и JComboBox к примеру.Приведение типов 
comboBox= (JComboBox) jcomponent;  
работает на ура. Как только я засовую их в Vector вот такого типа

Vector<JComponent> Boxes= new Vector<JComponent>();
Vector <JComboBox> zz = new Vector <JComboBox>();

то
 zz = (JComboBox) Boxes; 

есно не работает. Добавить туда Слово Vector  и т.п. не помогло. Типы не приводяться. Как мне всё таки это осуществить. Не лепить же мне функцию которая будет сама из одного Vector в другой пергонять.
PM MAIL   Вверх
ivg
Дата 25.11.2008, 02:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 33
Всего: 81



Код

    Vector<JComponent> Boxes= new Vector<JComponent>();
    Vector<? super JComboBox> zz = new Vector<JComboBox>();
    zz = Boxes;

PM MAIL   Вверх
sneer
Дата 25.11.2008, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 13.10.2008

Репутация: нет
Всего: нет



да только потом ещё одно преобразование 
Код


Vector<JComponent> Boxes= new Vector<JComponent>();
   Vector<? super JComboBox> zz = new Vector<JComboBox>();
Vector<JComboBox> boxCombo= new Vector <JComboBox>();
    zz = Boxes;
boxCombo = zz; 

не могу найти где про этот фокус почитать. Кто знает дайте ссылку.
PM MAIL   Вверх
ivg
Дата 25.11.2008, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 33
Всего: 81



Нет такого фокуса, и это хорошо, что компилятор не дает делать такое преобразование. Либо объявляйте Boxes как Vector<JComboBox> если добавляете в него только JComboBox'ы, либо:
Код

    public static void main(String[] args) {
        Vector<JComponent> boxes = new Vector<JComponent>();
        boxes.add(new JComboBox());
        boxes.add(new JCheckBox());
        System.out.println(boxes);
        Vector<JComboBox> zz = getSubVectorOfType(boxes, JComboBox.class);
        System.out.println(zz);
    }

    public static <T>
    Vector<T> getSubVectorOfType(Vector<?> input, Class<T> clazz) {
        Vector<T> result = new Vector<T>();
        for (Object o : input) {
            if (clazz.isInstance(o)) {
                result.add(clazz.cast(o));
            }
        }
        return result;
    }

PM MAIL   Вверх
sneer
Дата 26.11.2008, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 13.10.2008

Репутация: нет
Всего: нет



этот фокус работает. Я просто просил если кто знает почитать про него. 
PM MAIL   Вверх
AxNe0
Дата 27.11.2008, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 24.4.2006
Где: St. Petersburg

Репутация: 4
Всего: 5



sneer, думаю, достаточно почитать любую статью про generic'и, например, эту

Добавлено через 1 минуту и 1 секунду
а фокус "? super/extends Clazz" называется "использование масок"  smile 


--------------------
SCJP 6, SCBCD 5, OCEWSD 6
blog
PM ICQ Skype   Вверх
Asal
Дата 27.11.2008, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 26.12.2006
Где: Минск

Репутация: нет
Всего: 7



Цитата(AxNe0 @  27.11.2008,  13:36 Найти цитируемый пост)
а фокус "? super/extends Clazz" называется "использование масок"

 smile 


--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.