【发布时间】:2010-09-28 01:49:32
【问题描述】:
这是我的代码:
public class Sequence<T> {
protected List<T> sequence = new ArrayList<T>();
public Matrix<OrderedPair<T, ?>> createCartesianProduct(Sequence<?> secondSequence) {
Matrix<OrderedPair<T, ?>> result = new Matrix<OrderedPair<T, ?>>();
for (int rowIndex = 0; rowIndex < sequence.size(); rowIndex++) {
Sequence<OrderedPair<T, ?>> row = new Sequence<OrderedPair<T, ?>>();
for (int columnIndex = 0; columnIndex < secondSequence.length(); columnIndex++) {
row.add(new OrderedPair(sequence.get(rowIndex), secondSequence.sequence.get(columnIndex)));
}
}
return result;
}
}
这在 Eclipse 中编译,但在内部 for 循环 ( row.add(...) ) 内的行上,我收到以下三个警告:
-
OrderedPair是原始类型。对泛型类型OrderedPair()<T1, T2>的引用应该被参数化。 - 类型安全:OrderedPair 类型的表达式需要未经检查的转换才能符合
OrderedPair<T, ?> - 类型安全:构造函数 OrderedPair(Object, Object) 属于原始类型 OrderedPair。对泛型 OrderedPair
<T1, T2>的引用应该被参数化
我想在这里使用泛型来强制执行强类型检查,但我想我对泛型的理解不足以让我看到如何。有人可以教育我吗?
谢谢,
-- 肯
【问题讨论】:
-
呃。这就是为什么 refied generics 不应该的原因。 1 在 devoxx。
标签: java generics strong-typing