2014-12-04 83 views
0

具有以下聲明的類將被編譯並運行,但這是否會導致內存不必要的事情發生?關於Java泛型

public class Node<T extends Node<T>> extends NodeContainer<T>

我擔心的是,它可能最終會導致某種類型的無限遞歸的:

是否Node<T extends Node<T>>意思Node<T extends Node<T extends Node<T(...)>>>等?

回答

2

不,內存不會發生任何變化。由於類型擦除生效,除運行時強制轉換外,通用參數在運行時不予考慮,並且實際上已被擦除。編譯器只是確保T確實擴展或實現了Node<T>

0

你想要實現鏈接Node>? 它並沒有真正意義 如果您正在使用節點的工作(我假設有一些子兒的事?) 如果因此這可能會更好

Node<T> extends NodeContainer<T> { 
    T data; 
    Node<T> child; 
}