Ваши методы setLeft
, setMiddle
и setRight
принимают Объект типа T
в качестве аргумента, как вы заявили. Вы, однако, пытаетесь передать TernaryTreeNode<T>
в качестве аргумента. Возможно, вам придется либо создать методы, которые принимают TernaryTreeNode<T>
в качестве параметра, либо передать объект T
, содержащийся в узле, в качестве аргумента. Трудно решить, что является правильным, основываясь на информации, которую вы предоставили, но один из них, скорее всего, неправильный подход. Решить, оба ли они неправы, еще сложнее. ;)
currentNode.setLeft(currentNode = new TernaryTreeNode<T>(data));
Приведенная выше строка передает объект TernaryTreeNode<T>
вместо объекта T
.
В качестве более точного сравнения точек вы пытаетесь сделать сродни на это:
Вы определяете:
public void thisMethodTakesT(T item) { ...
Но вы звоните:
thisMethodTakesT(new ArrayList<T>()); // This will produce a compile time exception.
thisMethodTakesT
не принимает списки, требуется один элемент типа T
, а не список T
с. Точно так же ваш setLeft
(и другие) принимает T
, а не TernaryTreeNode<T>
.