第一种方法(劣等)
在Java中,您无法检查泛型类型,至少在没有反射的情况下.你是通用类型的钱,所以你做这样的事情:
public class RandomList {
private List list;
private Class clazz;
public List getList() {
return list;
}
public RandomList (Class clazz, int n) {
this.clazz = clazz;
list = new ArrayList();
Random rand = new Random();
rand.setSeed(System.currentTimeMillis());
if (clazz.isAssignableFrom(Integer.class)) {
for (int i = 0; i < n; i++) {
Integer r = rand.nextInt();
list.add(r);
}
}
else {
throw new IllegalArgumentException("Unsupported class: " + clazz.getName());
}
}
}
第二种方法(上级)
或者,您可以进一步概括它并添加一个函数来生成随机化结果.请注意,这需要Java 8.如果您不使用Java 8,则可以定义一个接口并匿名构建.
public class RandomList {
private List list;
public List getList() {
return list;
}
public RandomList (Function creator, int n) {
list = new ArrayList();
Random rand = new Random();
rand.setSeed(System.currentTimeMillis());
for (int i = 0; i < n; i++) {
list.add(creator.apply(rand));
}
}
}
使用以下方法构造新实例:
RandomList list = new RandomList<>(rand -> rand.nextInt(), 10);
第三种方法(清洁剂)
编辑:这发生在我以后,但你似乎使用Java 8,所以你可以只使用流:
List list = Stream.generate(() -> rand.nextInt()).limit(10).collect(Collectors.toList())