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

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

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 (); ошибка. Почему? Как сделать этот код рабочим?
 
12.06.2015
7
0
#3
Box<FotoProduct> b = new Box<FotoProduct> ();
Спасибо большое) Могли бы вы подсказать, как можно создать массив состоящий из объектов разных классов, не используя коллекции. И при этом, что бы можно было обращаться к методам этих объектов, определенных в их классах. Попалась интересная задача, не как не могу её осилить. А поисковый запрос грамотно сформулировать не могу...
 

-master-

Well-known member
14.01.2012
616
12
#4
как можно создать массив состоящий из объектов разных классов,
Через общий предок.
массив это не коллекция, вопрос не ясен
И при этом, что бы можно было обращаться к методам этих объектов, определенных в их классах.
в общем случае надо кастинг делать, ну или все методы в предке деражать как виртуальные или интерфейсы, или ... вощем по ситуации
 
12.06.2015
7
0
#5
@-master-, Спасибо огромное, за информацию. Теперь я хотя бы знаю что спрашивать у гугла.
 
12.06.2015
7
0
#6
А вообще, простите, я не понятно сформулировал то, что мне нужно. Проще будет так: Есть два класса (Foto и Video) которые наследуются от общего предка (Tovars). По условию задачи, мне нужен массив (причем один!) в котором будут храниться объекты этих двух классов (Foto, Video), соответственно этот массив создаю типа Tovars. Заполняю его объектами классов Foto и Video. Вопрос в том, что потом мне необходимо, бегая по этому массиву, обращаться к уникальным методам объектов классов Foto и Video, которые не определены в классе родителе (Tovars). Возможно ли это сделать, и если да, то как?
 

-master-

Well-known member
14.01.2012
616
12
#7
кстинг нужен (приведение к типу), по другому никак, не считая хитростей...
 
12.06.2015
7
0
#9
@Kmet, а что конкретно плохо? :stid::stid::stid:
Код:
if (p instanceof Child1) {
final Child1 child1 = (Child1) p;
 
} else if (p instanceof Child2) {
final Child2 child1 = (Child2) p;
 
}
Это?
Вы уж простите новичка... Наверное, трудноватый язык я выбрал для старта..
 

-master-

Well-known member
14.01.2012
616
12
#10
плохо то что так как вы делаете -
бегая по этому массиву, обращаться к уникальным методам объектов классов Foto и Video, которые не определены в классе родителе (Tovars).
сразу говорит о неправильном подходе, т.е. архитектура, и язык тут не причем, с таким подходом в любом языке будет засада