これが私のコードです:
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(...) ) 内の行で、次の 3 つの警告が表示されます。
OrderedPair
生タイプです。ジェネリック型への参照OrderedPair()<T1, T2>
はパラメーター化する必要があります。- 型の安全性: OrderedPair 型の式は、準拠するために未チェックの変換が必要です。
OrderedPair<T, ?>
- 型の安全性: コンストラクター OrderedPair(Object, Object) は生の型 OrderedPair に属します。ジェネリック型 OrderedPair への参照
<T1, T2>
はパラメーター化する必要があります
ここで強力な型チェックを強制するためにジェネリックを使用したいと思いますが、ジェネリックについての私の理解は、その方法を理解するには不十分だと思います。誰かが私を教育できますか?
ありがとう、
-- ケン