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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вложенные классы, Можно ли в яве так делать? 
:(
    Опции темы
Coocky
Дата 9.7.2013, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

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



Код

public class A {

    class Data {

        String a;
        String b;
        String c;
    }

    void run() {
        
        ArrayList<Data> array = new ArrayList<Data>array();
        
        for(......){
            Data data = new Data();
            data.a = "aaa";
            data.b = "bbb";
            data.b = "ccc";
            array.add(data);
        }
        
        callback.SendToAnotherThread(array); //калбек функция. callback-указатель на класс B
    }
    
    .........................
    another thread
    another class
             .........................
    
    public class B{
        
        class Data {

            String a;
            String b;
            String c;
        }
        

        void SendToAnotherThread(Object param){ 

            ArrayList<Data> data = (ArrayList<Data>)param;

            Data ups = data.get(0); //fail. Хотя в отладчике видно, 
                                                                                 // что обьект имеет данные, валидные
        }
    }
}


Страно-почему падаю. Думаю разберусь, но хочу узнать-можно ли так делать в Яве?
Т.е. я хочу передать, выражаясь языком  С++ -некий массив структур, в даном случае -Data

Правильно ли я делаю? 


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Beard
Дата 10.7.2013, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Coocky @  9.7.2013,  23:51 Найти цитируемый пост)
Страно-почему падаю. Думаю разберусь, но хочу узнать-можно ли так делать в Яве?

Потому что вот тут синтаксическая ошибка (слово array в конце лишнее):
Код

ArrayList<Data> array = new ArrayList<Data>array();

И потому что в рантайм B::SendToAnotherThread лист кастится не к тому типу - у Вас два идентичных класса Data, один из A, а другой в B - один надо убрать.
И так класс Data не зависит от A, его можно сделать static или вообще вынести в отдельный файл.


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

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

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


 




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


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

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