2012-07-26 53 views
1

我应该在我的insert -method上签名?我正在努力与泛型。在某种程度上,我想要Comparable<T>T,并且我尝试过<Comparable<T> extends T>如何在Java中编写“实现Comparable <T>”的方法签名?

public class Node<T> { 

    private Comparable<T> value; 

    public Node(Comparable<T> val) { 
     this.value = val; 
    } 

    // WRONG signature - compareTo need an argument of type T 
    public void insert(Comparable<T> val) { 
     if(value.compareTo(val) > 0) { 
      new Node<T>(val); 
     } 
    } 

    public static void main(String[] args) { 
     Integer i4 = new Integer(4); 
     Integer i7 = new Integer(7); 

     Node<Integer> n4 = new Node<>(i4); 
     n4.insert(i7); 
    } 
} 
+0

为什么你要比较2'Comparator'的? – 2012-07-26 12:03:42

+0

@ TheEliteGentleman我想比较两个'Comparable',所以我可以按照顺序排列它们。 – Jonas 2012-07-26 12:06:41

回答

6

不知道你想什么来实现,但你不应该包含在类的声明?

public static class Node<T extends Comparable<T>> { //HERE 

    private T value; 

    public Node(T val) { 
     this.value = val; 
    } 

    public void insert(T val) { 
     if (value.compareTo(val) > 0) { 
      new Node<T>(val); 
     } 
    } 
} 

注:这是很好的做法是使用<T extends Comparable<? super T>>代替<T extends Comparable<T>>

+2

为获得最佳效果,请使用'>' – newacct 2012-07-26 18:23:35

+0

@newacct您是对的 - 我已经做了相应的编辑。 – assylias 2012-07-26 19:44:56

相关问题