Num*_*tor 8 java generics syntax
关于以下内容我有几点想法:
public interface MaxStack<T extends Comparable <T>>
Run Code Online (Sandbox Code Playgroud)
1 - 为什么实现的类MaxStack应该像这样写:
public class MaxStackclass<T extends Comparable <T>> implements MaxStack<T>
Run Code Online (Sandbox Code Playgroud)
不是public class MaxStackclass<T extends Comparable <T>> implements MaxStack<T extends Comparable <T>>吗?
2-为什么这个类的私有变量,当我使用泛型时,应该只用<T>而不是用<T extnds Comparable<T>>?例如, private List<T> stack= new ArrayList<T>();
3 - <T extends Comparable<T>>和之间有什么区别<T extends Comparable>- 如果我需要比较班上的各种元素,两者都可以,不是吗?
编辑:我认为3的问题是,它可能允许插入以第二种方式定义的列表,以便具有不同的元素,这些元素都可以从可比较的方面扩展,然后当我想比较它们时,它将是不可能的,因为我们无法将String与Integer进行比较,所以都从Comparable扩展.
在声明中maxStackclass<T extends Comparable <T>>你已经表达了界限T.所以你不需要它了.
原因与上述相同.无需再次在同一类型参数上指定边界.
<T extends Comparable<T>>意味着T必须实现Comparable可以比较两个T实例的接口.虽然<T extends Comparable>手段T实现Comparable了它可以比较两个Objects.前者更具体.
如果我需要比较班上的各种元素,两者都可以,不是吗?
那么,从技术上讲,你可以使用两者来达到相同的效果.但是对于声明<T extends Comparable>,它将涉及不必要的强制转换,您可以避免使用类型安全<T extends Comparable<T>>