Вот мой код:
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>
должны быть параметризованы.
Я хотел бы использовать здесь универсальные шаблоны для обеспечения строгой проверки типов, но полагаю, что моего понимания универсальных шаблонов недостаточно, чтобы понять, как это сделать. Может ли кто-нибудь научить меня?
Спасибо,
- Кен