这是我的代码:
public class Sequence{ protected List sequence = new ArrayList (); public Matrix > createCartesianProduct(Sequence> secondSequence) { Matrix > result = new Matrix >(); for (int rowIndex = 0; rowIndex < sequence.size(); rowIndex++) { Sequence > row = new Sequence >(); 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()
应参数化对泛型类型的引用.
类型安全:OrderedPair类型的表达式需要未经检查的转换才能符合 OrderedPair
类型安全:构造函数OrderedPair(Object,Object)属于原始类型OrderedPair.
应参数化对泛型类型OrderedPair的引用
我想使用泛型来强制执行强类型检查,但我想我对泛型的理解不足以让我看到如何.有人可以教育我吗?
谢谢,
- 肯
内部for循环中的构造函数应该具有泛型:
row.add(new OrderedPair(sequence.get(rowIndex), secondSequence.sequence.get(columnIndex)));
但你不能这样使用?
; 所以你需要?
用字母替换所有的s,比方说E
.然后
在签名中添加一个,如下所示:
publicMatrix > createCartesianProduct(Sequence secondSequence) {
否则,编译器将不知道它E
来自何处.