Проблема в том, что в вашем коде есть несколько непроверенных преобразований:
javac -Xlint:unchecked *.java
DataRead.java:41: warning: [unchecked] unchecked call to Triplet(a,b,c) as a member of the raw type Triplet
Triplet<Long, Long, Double> t = new Triplet(origin, destination, dist);
^
where a,b,c are type-variables:
a extends Object declared in class Triplet
b extends Object declared in class Triplet
c extends Object declared in class Triplet
DataRead.java:41: warning: [unchecked] unchecked conversion
Triplet<Long, Long, Double> t = new Triplet(origin, destination, dist);
^
required: Triplet<Long,Long,Double>
found: Triplet
DataStructure.java:9: warning: [unchecked] unchecked call to Triplet(a,b,c) as a member of the raw type Triplet
Triplet<Node, Node, Double> triplet = new Triplet(t.getFirst(), t.getSecond(), t.getDistance());
^
where a,b,c are type-variables:
a extends Object declared in class Triplet
b extends Object declared in class Triplet
c extends Object declared in class Triplet
DataStructure.java:9: warning: [unchecked] unchecked conversion
Triplet<Node, Node, Double> triplet = new Triplet(t.getFirst(), t.getSecond(), t.getDistance());
^
required: Triplet<Node,Node,Double>
found: Triplet
Note: Main.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
4 warnings
Это приводит к "загрязнению кучи", когда вы получаете значение неправильного типа в одном из полей одного ваших родовых c классов.
Я думаю, что я вижу, в чем собственно проблема, но , так как это ваша домашняя работа Я оставлю это вам, чтобы прочитать предупреждения компиляции выше и выяснить, что вы сделали неправильно.
(Подсказка: вы используете Triplet
непоследовательно ...)
Урок здесь заключается в том, что вы НЕ должны игнорировать предупреждения компилятора о непроверенных преобразованиях, и т. Д. c при использовании generi c типов. Компилятор в основном говорит: «Я не знаю, правильно ли это». А если код неправильный, вы получите исключение приведения класса во время выполнения в неожиданном месте.