java - Java 中的语法 <T extends Class<T>>

标签 java generics syntax

我有以下几点想法:

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 扩展而来的。

最佳答案

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

  2. 原因同上。无需再次指定相同类型参数的边界。

  3. <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/

相关文章:

sql - 无法使用 sqldf 对 R 中的函数使用rank()

java - 尝试比较字符串和 double

java - Gradle Uber (Fat) Jar 和运行时中的 java.lang.NoClassDefFoundError

java - 反序列化 hibernate 和 jackson 中的延迟加载

c# - 哈希表到 Dictionary<> syncroot 。

java - 接受带有 toString() 方法的任何对象作为参数

java - 以编程方式验证用户身份

java - 将自定义内容转换到 chromecast

vb.net:使用泛型时调用构造函数

mysql - 有没有办法导出MySQL数据库以避免语法错误?