当前位置: 首页 > 面试题库 >

静态函数调用前的泛型尖括号

丌官哲彦
2023-03-14
问题内容

我一直使用泛型,并且总是看到这样使用尖括号:(Class<Type>例如List<String>)。

今天,在调用类似的静态方法之前,我遇到了泛型规范Class.<TypeA, TypeB>staticCall()。真正的示例是:ImmutableMap.<String, String>builder()

我从未见过这种用法,也无法在文档中找到这种特定用法。有人可以解释发生了什么吗?


问题答案:

这些被称为通用方法。

在Java 7之前,您必须指定通用引用的类型:

Util.<Integer, String>compare(p1, p2);

现在,编译器从上下文推断类型。



 类似资料:
  • 问题内容: 我遇到了一个涉及静态泛型方法的奇怪情况。这是代码: 我为什么不必在表达式中指定任何类型参数?这是某种类型推断吗?如果我想对此进行明确说明,如何指定类型参数? 问题答案: 是的,根据JLS第15.12.2.8节,这是基于分配目标的类型推断。明确地说,您可以这样称呼:

  • 问题内容: 没有静态成员可以使用类型参数,但是可以使用泛型类型参数调用静态成员吗​​?例如:- 这里的add()是一个静态方法。 在类似的主题上也有一些C#问题和答案,但是我不太确定如何在Java中使用它。 问题答案: 不,如果A是泛型类型,则无法执行。(Bozho对fast的回答是:),可能认为A是具体类型。 可行的方法如下。 但这可能不是您想要的。 阅读您的评论后,听起来您真正想要做的是: 您

  • 对于在C 11中调用模板函数需要什么,我有点困惑,在C 11中为模板参数提供默认值。 例如,假设我有以下模板化函数 我想在代码中的某个地方调用它。所有这些电话都有效吗? 它可以很好地编译GCC 4.7.2,但我不确定它是否完全正确。我猜我的不确定性可能来自要求使用空尖括号

  • 问题内容: 如果我有一个像这样的抽象类: 还有一些从Item派生的类是这样的: 我不明白为什么我不能使用泛型调用构造函数: 我知道可以有一个没有构造函数的类型,但是这种情况是不可能的,因为Pencil具有没有参数的构造函数,而Item是抽象的。但是我从eclipse中得到了这个错误: 无法实例化 我不明白为什么的 T类型 ,以及如何避免这种情况? 问题答案: 无法使用Java类型系统来强制类层次结

  • 问题内容: 我有一个包含静态创建方法的类。 当我使用时,它可以被编译。但是当我使用时,它编译失败,如何指定泛型? 问题答案: 假设您询问有关在类型推断失败的情况下显式指定类型的信息,则可以使用(请注意,该类型在after之后而不是before之前)。

  • 问题内容: 运行Demo类将在SomeClass中调用静态方法newInstance来调用构造函数并打印问候 定义方法将包括返回类型+方法名称以及参数 newInstance的返回类型是 SomeClass 在我看来很奇怪,因为我的班级叫做SomeClass 而不是 SomeClass 为什么在SomeClass 前面需要 ?看来,如果我不包含它,将会出现一个常见错误,称为“无法对非静态类型T进行