OrderedPair не генерируется, но добавляется в список (последовательность), который генерируется. Вы должны построить OrderedPair с помощью дженериков, например, выполните команду "new OrderedPair <...> (...)", чтобы избавиться от этого предупреждения.
Здесь я добавил шаблоны для всего метода, поэтому тип возвращаемого значения соответствует типу secondSequence:
public <Z> Matrix<OrderedPair<T, Z>> createCartesianProduct(Sequence<Z> secondSequence) {
Matrix<OrderedPair<T, Z>> result = new Matrix<OrderedPair<T, Z>>();
for (int rowIndex = 0; rowIndex < sequence.size(); rowIndex++) {
Sequence<OrderedPair<T, Z>> row = new Sequence<OrderedPair<T, Z>>();
for (int columnIndex = 0; columnIndex < secondSequence.length(); columnIndex++) {
addToRow(row, sequence.get(rowIndex), secondSequence.sequence.get(columnIndex));
}
}
return result;
}
static <T, Z> void addToRow(Sequence<OrderedPair<T, Z>> seq, T t, Z z) {
seq.add(new OrderedPair<T, Z>(t, z));
}