Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Если метод возвращает неизвестный класс, как быть? / 17 сообщений из 17, страница 1 из 1
08.09.2013, 19:23:57
    #38390455
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
Вот напихал в очередь объектов.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
            PriorityQueue queue =  new PriorityQueue(10, comparator);

            BuildCompleted e1 = new BuildCompleted();
            e1._time = new Timestamp(1377950159);

            Battle b1 = new Battle();
            b1._time = new Timestamp(1377950150);

            queue.add(e1);
            queue.add(b1);



А как их оттуда вытаскивать?
...
Рейтинг: 0 / 0
08.09.2013, 19:24:20
    #38390456
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
Код: java
1.
2.
3.
4.
5.
6.
7.
            while (true) {
                ??? e = (BuildCompleted)queue.poll();
                if(e == null) {
                    break;
                }
                System.out.println(e.getTimeStamp());
            }
...
Рейтинг: 0 / 0
08.09.2013, 19:24:45
    #38390458
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
тайпкаст тоже
...
Рейтинг: 0 / 0
08.09.2013, 19:28:39
    #38390459
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
Hett,
завести интерфейс ITimestampOwners с методом getTimeStamp, сказать что оба класса его реализуют, соответственно его использовать в качестве типа.
...
Рейтинг: 0 / 0
08.09.2013, 19:31:24
    #38390461
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
гмм, ща)
...
Рейтинг: 0 / 0
08.09.2013, 19:34:31
    #38390463
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
Hett,

Вы вроде как решили проблему: 14779831 ?
...
Рейтинг: 0 / 0
08.09.2013, 19:37:02
    #38390465
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
Понятно, спс, тоже самое и с абстрактным классом можно.
...
Рейтинг: 0 / 0
08.09.2013, 19:37:41
    #38390466
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
UsmanHett,

Вы вроде как решили проблему: 14779831 ?

Мне не понравилось что-то то решение. Лишние городушки. Сейчас все хорошо)
...
Рейтинг: 0 / 0
08.09.2013, 20:04:49
    #38390473
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
Hett, ты можешь через instanceof проверять что объект воходит в базовый тип для всех твоих объектов.
Это 1 проверка. Если ты создал базовый тип конечно.
...
Рейтинг: 0 / 0
08.09.2013, 20:11:22
    #38390476
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
maytonHett, ты можешь через instanceof проверять что объект воходит в базовый тип для всех твоих объектов.
Это 1 проверка. Если ты создал базовый тип конечно.
Типа
Код: java
1.
2.
3.
4.
5.
6.
7.
if(a instanceof Class1) {
   Class1 x = ...
} else if (a instanceof Class2) {
   Class2 x = ...
}

x.run(); 


?

Как я понимаю, что если у меня есть один базовый класс который требует от наследников реализации метода run, то я могу использовать его в качестве универсального типа данных?
...
Рейтинг: 0 / 0
08.09.2013, 21:41:00
    #38390515
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
HettКак я понимаю, что если у меня есть один базовый класс который требует от наследников реализации метода run, то я могу использовать его в качестве универсального типа данных?
угу

HettТипа
Код: java
1.
2.
3.
4.
5.
6.
7.
if(a instanceof Class1) {
   Class1 x = ...
} else if (a instanceof Class2) {
   Class2 x = ...
}

x.run(); 



А такое в случае, если нужен метод, которого нет в базовом классе/интерфейсе
...
Рейтинг: 0 / 0
08.09.2013, 21:41:13
    #38390516
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
Делай как хочешь. Но не забывай про паттерн RCWP (Replace Conditional with polymorphism).
...
Рейтинг: 0 / 0
08.09.2013, 21:51:52
    #38390517
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
Просто я вот че не понял то сразу:
К примеру есть класс


Код: java
1.
2.
3.
4.
5.
public abstract class Test {

    public abstract void run();

}



Есть его наследник:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class TestExt extends Test {


    protected int localMethod()
    {
        return 1;
    }

    public void run()
    {
        System.out.println(this.localMethod());
    }
}



При этом наследника засовываем в переменную типа Test

Код: java
1.
2.
        Test test = new TestExt();
        test.run();



И все как-то работает. По сути получается, что в переменной типа Test находится полноценный инстанс типа TestExt, собстна даже если поглядеть в test.getClass() , то он скажет что "class TestExt".
Но если применить тайпкаст к примитивным типам, то они усекаются.
...
Рейтинг: 0 / 0
08.09.2013, 21:53:53
    #38390518
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
Хотя как я понимаю по логике вещей, типизация классов нужна только на стадии компилирования и разработки, а при выполнении программы оно уже не имеет значения и отсюда получаются подобные допуски?
...
Рейтинг: 0 / 0
08.09.2013, 22:10:43
    #38390523
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
HettПросто я вот че не понял то сразу:Это называется Восходящим преобразованием .

P.S.
mayton Вам уже намекал на счет этого.
...
Рейтинг: 0 / 0
08.09.2013, 22:28:41
    #38390526
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
потнятно, пропустил этот момент, надо будет еще раз перечитать все) спс)
...
Рейтинг: 0 / 0
08.09.2013, 22:29:21
    #38390528
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Если метод возвращает неизвестный класс, как быть?
в нетипизированных языках не обращаешь на это внимание
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Если метод возвращает неизвестный класс, как быть? / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]