【发布时间】:2016-06-19 20:26:21
【问题描述】:
我有不同类型的BagWithRandomSelect 中的ArrayList。所以arrayList.get(1) 可以返回一个BagWithRandomSelect<Integer> 对象,而arrayList.get(2) 可以返回一个BagWithRandomSelect<String> 对象。是否可以编写一个方法从 BagWithRandomSelect 返回一个元素作为它自己的类型,而不是返回一个需要强制转换的 Object?
我的问题在于方法testGetFromColumn():
public class BagWithRandomSelect<E> {
ArrayList<E> bag;
public BagWithRandomSelect() {
this.bag = new ArrayList<>();
}
public void add(E element) {
this.bag.add(element);
}
public E randomSelect() {
Random rnd = new Random();
int rndInt = this.rnd.nextInt(bag.size);
return this.bag.get(rndInt);
}
}
public class DatafileCreator {
ArrayList<BagWithRandomSelect> columnList;
public DatafileCreator() {
this.columnList = new ArrayList<Stack>();
}
// skipping some methods...
public void addNewColumn(BagWithRandomSelect bag, String s) {
this.columnList.add(bag);
}
public Object testGetFromColumn(int columnNum) {
BagWithRandomSelect<Object> bag = this.columnList.get(columnNum);
return bag.randomSelect();
}
}
【问题讨论】:
-
你试过 instanceof 吗?
标签: java generics arraylist collections