方法声明中的 Java 泛型 2 组 <K,V> 或 <T> [重复]

Posted

技术标签:

【中文标题】方法声明中的 Java 泛型 2 组 <K,V> 或 <T> [重复]【英文标题】:Java generics 2 set of <K,V> or <T> in method declaration [duplicate] 【发布时间】:2017-11-06 22:37:14 【问题描述】:

我一直在看到以下方法声明,但我不明白 &lt;K, V&gt;&lt;T&gt; 的使用方式。

public &lt;K, V&gt; 在这个方法中做了什么?

public <K, V> void add(K k, V v)

static &lt;T&gt; 在这个方法中做了什么?

public static <T> int countGreaterThan(T[] anArray, T elem)

【问题讨论】:

这两者的含义与没有泛型时的含义完全相同。 docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.htmldocs.oracle.com/javase/tutorial/java/javaOO/classvars.html 泛型参数 (&lt;K, V&gt;/&lt;T&gt;) 与方法修饰符 (public/static) 分开,后者与返回值 (int/@987654334) 分开@)。 【参考方案1】:

回想一下,在 Java 中,所有方法都必须在一个类中,所以这个方法将在某种类中,比如说“Clazz”。

public 表示该方法可以从类外部访问,任何人都可以访问。

static表示调用该方法时,不需要从特定的对象调用,而是直接使用类名调用即可。因此,您可以通过键入 Clazz.countGreaterThan 来调用 countGreaterThen,而不是使用创建为 Clazz 实例的特定对象

【讨论】:

以上是关于方法声明中的 Java 泛型 2 组 <K,V> 或 <T> [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java泛型Number能比较大小吗?

《Java架构筑基》从Java基础讲起——泛型的限制

JAVA泛型

JAVA进阶-泛型

Java 泛型

C#泛型委托,匿名方法,匿名类