java - 泛型方法——语法困惑

标签 java generics

我正在阅读泛型方法。我研究过,如果您不在类级别声明类型并使用泛型方法,则语法会以某种方式像这样

public <T> void makeArrayList(T t)

在这里我可以得出以下结论,如果我不在返回类型之前声明占位符,它会给我编译时错误。我很困惑。我正在研究其他主题 Java Generics: Generic type defined as return type only但它似乎很困惑。我的问题是

  1. 编译器如何知道集合的类型是什么?
  2. 为什么我们需要在返回类型之前声明类型?

有人可以详细说明这一点吗?

最佳答案

如果你不把 <T>在 header 中,函数无法知道 T存在。

Oracle 文档中对类型推断的简短解释:

The compiler infers the type argument for us, based on the types of the actual arguments. It will generally infer the most specific type argument that will make the call type-correct.

引用资料:
我强烈推荐阅读 Java Generics FAQ ,特别是关于 Java Generic Methods 的部分. Oracle tutorial on Generic Methods也很有用,尽管不如其他引用资料广泛。

关于java - 泛型方法——语法困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18176250/

相关文章:

generics - 在 Rust 中将 const 除以泛型

java - 扩展和 super 的通用概念

java - 在Java中使用Thread对象的内在锁可以吗?

c# - 非泛型类中的泛型方法

用于绘制图像的 Java Graphics2D 方法,其中使用像素 alpha 值,但颜色值替换为给定颜色

java - 我正在尝试 Junit 测试方法,该方法返回以下结构的 Map 对象 : Map<List<int[]>>, Enum> foo.正确的做法是什么?

c# - 具有逆变类型参数和 Unity 容器的泛型

java - 编写指向其实现者的通用接口(interface)的便捷方法

java - 从 XML 构建树结构缓慢

java - 需要在Tomcat服务器中抓取传入的URL请求