【发布时间】:2016-07-12 12:56:25
【问题描述】:
我想在这里这样做,它确实有效,但不知何故我认为这不是一个好的解决方案:
class A5<T> implements A4<T> {
private final T[] elements;
A5(T... elements) {
this.elements = elements;
}
public <R> A5<R> map(Function<T, R> function) {
List<R> liste = new LinkedList<>();
for (T element : elements) {
liste.add(function.apply(element));
}
Object[] objects = new Object[liste.size()];
int counter = 0;
for (R element : liste) {
objects[counter] = liste.get(counter++);
}
return new A5(objects);
}
}
Object[] 对我来说是个问题,但我无法创建 R[] 数组。有没有人有解决方案?更改 CTOR 和 map 的签名不是我想要的。只有身体可以改变。
【问题讨论】:
-
旁注:你明白你用的A4、A5的名字真的有点什么都没说吗?为什么要声明 A5 是泛型的,然后在不提供类型参数的情况下实例化 A5 的对象并直接使用 Object ?
-
不改变CTOR,是说它的主体不能改变吗?还是签名?还是两者兼而有之?
-
explv both Jägermeister 我只是不允许在这里提供原始源代码。
-
@N-rG 在这种情况下,您需要使用
Object[],请参阅我的回答 -
泛型数组通常不好。使用
List。