儘管花了大量的時間搜索一個答案,我的困境和重新閱讀我的Java教科書中泛型的一章,似乎無法修復問題下面的代碼:Java:「使用未經檢查或不安全的操作。使用...重新編譯」
public class RedBlackTree<I extends Comparable>
{
private int count = 0;
private RedBlackNode root;
private RedBlackNode current;
private RedBlackNode[] stack;
/**
* Inner class used for representing the nodes of the red-black balanced binary search tree object.
*/
private class RedBlackNode implements Comparable
{
private I id;
private boolean is_btree;
private RedBlackNode[] links;
/**
* Constructor for objects of the RedBlackNode class.
*
* @param id The ID of the node.
*/
private RedBlackNode(I id)
{
if (id == null)
{
throw new NullPointerException("ID cannot be null.");
}
this.id = id;
this.is_btree = true;
}
/**
* Function for comparing the RedBlackNode object to another object.
*
* @param obj The object to be compared.
* @return If invocant > passed, returns 1; if invocant < passed, returns -1; if invocant = passed, returns 0.
*/
private int compareTo(Object obj)
{
if (obj instanceof RedBlackTree.RedBlackNode)
{
RedBlackNode node = (RedBlackNode)obj;
int result = id.compareTo(node.id);
return result > 0 ? 1 : result < 0 ? -1 : 0;
}
else
{
throw new ClassCastException("Expected a RedBlackNode object.");
}
}
}
}
特別是,我收到一個彈出以下消息:
Warnings from last compilation
C:\Users\...\RedBlackTree.java uses unchecked or unsafe operations.
Recompile with -Xlint:unchecked for details.
幾乎所有的我在這裏組合或類似的還有導致這樣的彈出窗口。我正在使用BlueJ環境進行編程,這使得無法合併相關編譯器參數以查看任何細節。
據我迄今爲止從我的研究中可以看出,這與內部類使用I泛型類型以及「RedBlackNode實現Comparable」以及RedBlackNode內部類中的compareTo方法需要相關以某種方式與這個事實相抗衡。
我知道這個問題已經在stackoverflow和其他地方問過了,並且回答了很多次,但我似乎無法將從這些實例中學到的東西應用到我的案例中。我對泛型非常新,所以我可以得到的任何幫助將非常感謝!
謝謝!其他答案當然有幫助,但這個答案解決了所有問題(包括注意到重寫compareTo函數的公共/私人困境,我認爲這可能會導致一個問題,但沒有人提到過)。 – sweetname 2013-03-21 11:21:10