Помогите новичку с generics

Тема в разделе "Java", создана пользователем rn3rjd, 12 июн 2015.

  1. rn3rjd

    rn3rjd Member

    Регистрация:
    12 июн 2015
    Сообщения:
    7
    Симпатии:
    0
    Есть класс коробочка для хранения любых типов данных...

    Код (Java):
    public class Box <T>{
     
     
    private T arg;
     
    public void setArg (T arg) {
     
    this.arg = arg;
     
    }
     
    public T getArg () {
    return arg;
    }
     
    }

    Есть, такой код:

    Код (Text):
    public static void main (String[] args) {
     
    Box b = new Box ();
     
     
        FotoProduct f = new FotoProduct();
     
        b.setArg(f);
       
     
     
     FotoProduct f2= b.getArg ();
     }
    }
     
     
    В строке FotoProduct f2 = b.getArg (); ошибка. Почему? Как сделать этот код рабочим?
     
  2. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
    Box<FotoProduct> b = new Box<FotoProduct> ();
     
  3. rn3rjd

    rn3rjd Member

    Регистрация:
    12 июн 2015
    Сообщения:
    7
    Симпатии:
    0
    Спасибо большое) Могли бы вы подсказать, как можно создать массив состоящий из объектов разных классов, не используя коллекции. И при этом, что бы можно было обращаться к методам этих объектов, определенных в их классах. Попалась интересная задача, не как не могу её осилить. А поисковый запрос грамотно сформулировать не могу...
     
  4. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    19
    Через общий предок.
    массив это не коллекция, вопрос не ясен
    в общем случае надо кастинг делать, ну или все методы в предке деражать как виртуальные или интерфейсы, или ... вощем по ситуации
     
  5. rn3rjd

    rn3rjd Member

    Регистрация:
    12 июн 2015
    Сообщения:
    7
    Симпатии:
    0
    @-master-, Спасибо огромное, за информацию. Теперь я хотя бы знаю что спрашивать у гугла.
     
  6. rn3rjd

    rn3rjd Member

    Регистрация:
    12 июн 2015
    Сообщения:
    7
    Симпатии:
    0
    А вообще, простите, я не понятно сформулировал то, что мне нужно. Проще будет так: Есть два класса (Foto и Video) которые наследуются от общего предка (Tovars). По условию задачи, мне нужен массив (причем один!) в котором будут храниться объекты этих двух классов (Foto, Video), соответственно этот массив создаю типа Tovars. Заполняю его объектами классов Foto и Video. Вопрос в том, что потом мне необходимо, бегая по этому массиву, обращаться к уникальным методам объектов классов Foto и Video, которые не определены в классе родителе (Tovars). Возможно ли это сделать, и если да, то как?
     
  7. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    19
    кстинг нужен (приведение к типу), по другому никак, не считая хитростей...
     
  8. Kmet

    Kmet Well-Known Member
    Java Team

    Регистрация:
    25 май 2006
    Сообщения:
    1.018
    Симпатии:
    1
  9. rn3rjd

    rn3rjd Member

    Регистрация:
    12 июн 2015
    Сообщения:
    7
    Симпатии:
    0
    @Kmet, а что конкретно плохо? :stid::stid::stid:
    Код (Text):
    if (p instanceof Child1) {
    final Child1 child1 = (Child1) p;
     
    } else if (p instanceof Child2) {
    final Child2 child1 = (Child2) p;
     
    }
    Это?
    Вы уж простите новичка... Наверное, трудноватый язык я выбрал для старта..
     
  10. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    19
    плохо то что так как вы делаете -
    сразу говорит о неправильном подходе, т.е. архитектура, и язык тут не причем, с таким подходом в любом языке будет засада
     
Загрузка...

Поделиться этой страницей