【发布时间】:2011-11-09 02:34:21
【问题描述】:
我有以下几点想法:
public interface MaxStack<T extends Comparable <T>>
1-为什么实现MaxStack的类要这样写:
public class MaxStackclass<T extends Comparable <T>> implements MaxStack<T>
而不是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 扩展而来。
【问题讨论】:
-
只是对风格的挑剔:您的公共类的名称不是 CamelCase,这是一种避免误解的约定。虽然嵌套类不是这样的问题,但在这种情况下它是一个公共类......
-
为了获得最佳效果,请使用
<T extends Comparable<? super T>>