Это потому, что запись имеет значение
Map.Entry <String,Integer>
, но на самом деле это
Map.Entry<Integer,Integer>
Компилятор не может гарантировать, что подсписок, который вы передаете методу извлечения, содержит или нетОбъекты типа К / В.Так что он не может потерпеть неудачу во время компиляции, но он советует вам с непроверенным предупреждением приведения в 21 и 22 строчку.
Если вы хотите быть ошибками во время компиляции, вы можете объявить метод извлечения таким образом
public Map<K, K> extract(Iterator<List<K>> iter) throws IOException
(я повторяю K, потому что в List есть только один тип параметра)
таким образом, вам не нужно приводить:
K key = (tuple.get(0) == null ? null : tuple.get(0));
K value = (tuple.get(1) == null ? null : tuple.get(1));
в основном методе
MapResultExtractor<Integer, Integer> extractor =
new MapResultExtractor<Integer, Integer>();
Если вы попытаетесь передать методу извлечения что-то отличное от Iterator>, вы увидите ошибки времени компиляции