具有以下聲明的類將被編譯並運行,但這是否會導致內存不必要的事情發生?關於Java泛型
public class Node<T extends Node<T>> extends NodeContainer<T>
我擔心的是,它可能最終會導致某種類型的無限遞歸的:
是否Node<T extends Node<T>>
意思Node<T extends Node<T extends Node<T(...)>>>
等?
具有以下聲明的類將被編譯並運行,但這是否會導致內存不必要的事情發生?關於Java泛型
public class Node<T extends Node<T>> extends NodeContainer<T>
我擔心的是,它可能最終會導致某種類型的無限遞歸的:
是否Node<T extends Node<T>>
意思Node<T extends Node<T extends Node<T(...)>>>
等?
不,內存不會發生任何變化。由於類型擦除生效,除運行時強制轉換外,通用參數在運行時不予考慮,並且實際上已被擦除。編譯器只是確保T
確實擴展或實現了Node<T>
。
你想要實現鏈接Node>? 它並沒有真正意義 如果您正在使用節點的工作(我假設有一些子兒的事?) 如果因此這可能會更好
Node<T> extends NodeContainer<T> {
T data;
Node<T> child;
}