【问题标题】:What do the angle brackets mean in this Interface definition? [duplicate]这个接口定义中的尖括号是什么意思? [复制]
【发布时间】:2012-08-24 11:00:11
【问题描述】:

我对 Java 编程比较陌生,我遇到了这个接口声明和实现它的类:

public interface Abcd<E extends Comparable<E>>{
......
......
......
}

public class AbcdImpl<E extends Comparable<E>> implements Abcd<E>{
......
......
......
}

您能解释一下&lt;E extends Comparable&lt;E&gt;&gt; 代表什么以及&lt;E&gt; 的典型含义吗?

【问题讨论】:

  • 您到底为什么要在问题中将 替换为 ( and )?也许对人们回答不感兴趣?
  • 可能重复 stackoverflow.com/questions/2231804/… & "E" 代表任何数据类型
  • @upcoming_coder:实际上这不是完全重复的,链接到的提问者已经知道泛型,这是更基本的。
  • 是泛型类的模板名称。例如,将其视为 Collection_of_
  • Abcd&lt;E extends Comparable&lt;E&gt;&gt; 正确的语法,顺便说一句?

标签: java generics interface


【解决方案1】:

E 代表一个类型,字母不需要是 E 可以是任何东西,但通常人们会使用 T,K,E,V 这样的字母。使用以某种方式表示类型用途的字母是有意义的。比如Map接口Map&lt;K,V&gt;,K代表key,V代表value。

至于&lt;E extends Comparable&lt;E&gt;&gt;,表示类型E是AbcdImpl的泛型,需要自己实现Comparable接口(为自己)。所以任何类E 都必须有一个方法

compareTo(E obj)

用于将E 的一个实例与E 的另一个实例进行比较。

【讨论】:

    【解决方案2】:

    你看到的是一个泛型类型声明。

    http://en.wikipedia.org/wiki/Generics_in_Java

    Abcd&lt;E&gt; 通常读作“E 的 Abcd”。

    例如,List 是一个项目列表,但没有指定是什么类型的项目。 List 是一个字符串列表,是泛型 List 的参数化版本。

    【讨论】:

      【解决方案3】:

      我觉得你应该看看Lesson: Generics
      它将帮助您了解通用集合。

      【讨论】:

        猜你喜欢
        • 2013-06-12
        • 1970-01-01
        • 2023-03-15
        • 2021-11-26
        • 1970-01-01
        • 1970-01-01
        • 2019-09-24
        • 2011-09-30
        • 1970-01-01
        相关资源
        最近更新 更多