语法<T在Java中扩展了Class <T >>

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扩展.

Swa*_*rma 9

  1. 在声明中maxStackclass<T extends Comparable <T>>你已经表达了界限T.所以你不需要它了.

  2. 原因与上述相同.无需再次在同一类型参数上指定边界.

  3. <T extends Comparable<T>>意味着T必须实现Comparable可以比较两个T实例的接口.虽然<T extends Comparable>手段T实现Comparable了它可以比较两个Objects.前者更具体.

如果我需要比较班上的各种元素,两者都可以,不是吗?

那么,从技术上讲,你可以使用两者达到相同的效果.但是对于声明<T extends Comparable>,它将涉及不必要的强制转换,您可以避免使用类型安全<T extends Comparable<T>>