В комментариях вы указали, что определили переменную hier
как с Hierachy hier = new Hierarchy<>();
. Это вызывает непроверенное предупреждение, потому что вы пропустили переменную типа в объявлении переменной. Предупреждение не было вызвано неправильным преобразованием между List
и List<HierarchyNode>
, как можно было изначально подумать, прочитав предупреждения компилятора.
Следующее, например, должно сделать трюк:
Hierarchy<? extends User> hier = new Hierarchy<>();
List<HierarchyNode> list = hier.getHierarchyNodesParentFirst(0);
или альтернативно (что, вероятно, не предназначено)
Hierarchy hier = new Hierarchy<>();
List list = hier.getHierachyNodesParentFirst(0);
Редактировать: вы также можете удалить универсальный параметр <U extends User>
из класса Hierarchy
. Очевидно, это не то, что вам нужно, но подчеркивается, что, поскольку нет типа, стирание типа не может произойти, и код будет компилироваться без предупреждений.
Это вызвано стиранием типа. В StackOverflow есть обсуждение .