Вы не можете привести объект к узлу:
Node<T>[] children = (Node<T>[])new Object[degree * 2];
Либо вы думаете об этом неправильно: «Любой объект может быть узлом», когда единственное, что является истинным, это«Каждый узел - это объект», или вы привыкли к C ++ или подобному, в котором вы можете привести пустой указатель к любому другому указателю.
Кроме того, у вас не может быть массивов универсальныхтипы .Например, вам нужно будет создать тип оболочки.StringNode extends Node<String>
для того, чтобы сохранить их в массиве.
Этот фрагмент, например, прекрасно компилируется:
class Node<T> {
}
class StringNode extends Node<String> {
}
public class Test {
public void method() {
Node<String>[] children = new StringNode[5];
}
}