我對Java比較陌生,因此是個問題。爲什麼Java在轉換對象時會強制轉換對象,以及編譯器究竟發生了什麼。這是我的簡單水平定單搜索的代碼。在Java中顯式對象轉換
void LevelOrder(Node root)
{
Queue<Node> Q = new LinkedList();
Q.add(root);
while(!Q.isEmpty()){
Node p = Q.poll();
System.out.print(p.data+ " ");
if(p.left != null) Q.add(p.left);
if(p.right != null) Q.add(p.right);
}
}
當我在黑客等級提供的基於Web的IDE上運行此代碼時,它會編譯但會給我下面的警告。
Note: Solution.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
當我通過改變poll
該線投射的節點對象,
Node p = (Node)Q.poll();
它仍然彙編表示相同的警告。
但是,在我的IntelliJ IDE中,第一個代碼甚至不會編譯,只有第二個代碼(使用顯式轉換)編譯。
有人可以解釋這裏究竟發生了什麼。 除了解決錯誤,有人可以解釋爲什麼一個編譯器讓這行代碼編譯,而另一個沒有沒有明確的轉換。
Node p = Q.poll();
在'LinkedList',即'LinkedList <>'之後需要'''''。 –
您需要詳細瞭解仿製藥 – Ramanlfc
爲什麼要投票。如果世界上的每個人都知道一切,那麼就不會有SO。 – Zeus