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

  • Автор темы rn3rjd
  • Дата начала
R

rn3rjd

Есть класс коробочка для хранения любых типов данных...

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


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

Код:
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 (); ошибка. Почему? Как сделать этот код рабочим?
 
R

rn3rjd

Box<FotoProduct> b = new Box<FotoProduct> ();
Спасибо большое) Могли бы вы подсказать, как можно создать массив состоящий из объектов разных классов, не используя коллекции. И при этом, что бы можно было обращаться к методам этих объектов, определенных в их классах. Попалась интересная задача, не как не могу её осилить. А поисковый запрос грамотно сформулировать не могу...
 
M

-master-

как можно создать массив состоящий из объектов разных классов,
Через общий предок.
не используя коллекции.
массив это не коллекция, вопрос не ясен
И при этом, что бы можно было обращаться к методам этих объектов, определенных в их классах.
в общем случае надо кастинг делать, ну или все методы в предке деражать как виртуальные или интерфейсы, или ... вощем по ситуации
 
R

rn3rjd

@-master-, Спасибо огромное, за информацию. Теперь я хотя бы знаю что спрашивать у гугла.
 
R

rn3rjd

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

-master-

кстинг нужен (приведение к типу), по другому никак, не считая хитростей...
 

Kmet

Well-known member
25.05.2006
904
8
BIT
0


но так делать плохо
 
R

rn3rjd

@Kmet, а что конкретно плохо? :stid::stid::stid:
Код:
if (p instanceof Child1) {
final Child1 child1 = (Child1) p;
 
} else if (p instanceof Child2) {
final Child2 child1 = (Child2) p;
 
}

Это?
Вы уж простите новичка... Наверное, трудноватый язык я выбрал для старта..
 
M

-master-

плохо то что так как вы делаете -
бегая по этому массиву, обращаться к уникальным методам объектов классов Foto и Video, которые не определены в классе родителе (Tovars).
сразу говорит о неправильном подходе, т.е. архитектура, и язык тут не причем, с таким подходом в любом языке будет засада
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!