【发布时间】:2018-10-01 02:10:05
【问题描述】:
一开始我写的是:
private ArrayList<Integer> getDataList() {
ArrayList<Integer> dataList = new ArrayList<>(LEN);
for (int i = 0; i < LEN; i++)
dataList.add(i);
Collections.shuffle(dataList);
return dataList;
}
后来我决定使用泛型:
private <E> ArrayList<E> getDataList() {
ArrayList<E> dataList = new ArrayList<>(LEN);
for (int i = 0; i < LEN; i++)
dataList.add(/* a procedure that generates E instance from index i*/);
Collections.shuffle(dataList);
return dataList;
}
接口中的静态方法是不可覆盖的,所以不能调用E上的静态方法来生成实例。
如何重构它以使用泛型?谢谢。
【问题讨论】:
-
您可以将函数或供应商作为参数传递到您的方法中以提供元素。