我有以下几点想法:
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-为什么这个类的私有(private)变量,当我使用泛型时,应该只用 <T>
来写而不是 <T extnds Comparable<T>>
?例如,private List<T> stack= new ArrayList<T>();
3-<T extends Comparable<T>>
有什么区别?和 <T extends Comparable>
- 如果我需要比较类(class)中的 10 个元素,两者都可以,不是吗?
编辑:我认为 3 的问题在于,它可能允许插入以第二种方式定义的列表,以具有不同的元素,这些元素都从可比较的扩展而来,然后当我想比较它们时,它不会'这是不可能的,因为我们无法将 String 与 Integer 进行比较,两者都是从 Comparable 扩展而来的。
最佳答案
在声明中
maxStackclass<T extends Comparable <T>>
你已经在T
上表达了界限.所以您不再需要它。原因同上。无需再次指定相同类型参数的边界。
<T extends Comparable<T>>
意味着T
必须实现Comparable
可以比较两个的界面T
实例。同时<T extends Comparable>
表示T
工具Comparable
这样它就可以比较两个Object
一般而言。前者更具体。
if I need to compare bewteen elements in my class, both will be O.K, no?
好吧,从技术上讲,您可以同时使用两者来获得相同的结果。但对于申报 <T extends Comparable>
它将涉及不必要的转换,您可以避免使用类型安全 <T extends Comparable<T>>
关于java - Java 中的语法 <T extends Class<T>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7282677/