当前位置: 首页 > 知识库问答 >
问题:

当一个方法只有一个泛型类型时,使它泛型化又有什么意义呢?

微生宝
2023-03-14

如果方法定义为:

<T> List<T> transform(List<T> list)

第一个T加什么?因为它与以下内容基本相同:

List<T> transform(List<T> list)

共有1个答案

傅元章
2023-03-14

是定义。您需要在使用泛型类型参数之前定义它们,就像您必须在使用变量之前定义它们一样。

请记住,t只是一个命名约定。那个标识符可以是任何东西。它可以是

假设他们按照您的建议实现它,编译器只是推断任何丢失的类型是泛型类型参数。假设我有一个自定义类foo忘记导入了。

List<Foo> transform(List<Foo> list)

编译器会说“好吧,我不知道Foo是什么,所以我们就假设它是一个泛型参数”。然后,您的方法编译得很好,而您更希望编译器能够捕捉到这个错误。

或者您可能认为t应该是一种特殊情况。然后,你就会接受一些目前只是一个惯例的东西,并使之成为语言的一个特殊部分。您必须处理有人创建一个名为T的真实类的可能性。

所以显式声明有其用途,即使它们有时看起来很冗长。

 类似资料:
  • 在研究泛型时,我注意到泛型方法和泛型类型(类或接口)在类型引入语法上的一个差异使我感到困惑。 泛型方法的语法为 文件上说 为了彼此保持一致,我希望方法语法为 ,或者类型语法(for class)为,但事实显然并非如此。 为什么一个要介绍在前,另一个要介绍在后? 我主要以的形式使用泛型,并认为可能看起来很奇怪,但这是一个主观的参数,此外对于方法也是这样。您可以调用,类似于 在寻找技术解释时,我想在指

  • 这个问题是在泛型关联类型在Rust中可用之前提出的,尽管它们是被提出和开发的。 我的理解是,特征泛型和关联类型在它们可以绑定到结构的类型数量上有所不同。 关联类型仅绑定1个类型: 泛型关联类型是这两种类型的混合。它们绑定到一个类型,正好有一个关联的生成器,而生成器又可以关联任何数量的类型。那么前面示例中的和这个泛型关联类型有什么区别呢?

  • 它是关于java中具有两种泛型类型(一种用于返回类型,另一种用于形式参数)的泛型方法以及如何实现它。我想我在图片中缺少一些东西来让它工作。 事情是这样的... 这是工作 : 这不起作用: java编译器告诉我: 好吧,就是这样。提前感谢大家!希望它能在未来帮助别人! P、 D:这不是枚举类型的问题。它发生在类和层次结构之间。所以别怪Enum了,我试过了,但没用。 对于泛型参数 我们可以做一个一般规

  • 我在覆盖接口中声明的方法时遇到了一些问题,该方法使用泛型参数作为其异常,并使用泛型作为其参数之一。为了说明,我编写了以下代码接口 通过javac运行,我得到 请注意,在接口中,metodoA和metodoB之间的唯一区别在于它们的参数。 为什么Implementadora(Implementadora)的metodoB(metodoB)(代码)不重写Interfaz(代码),但重写metodoB(

  • 问题内容: 我正在使用泛型编写某些东西,令我惊讶的是,我发现这行不通: 那我不能实例化泛型吗?没有任何方法可以做到这一点吗? 问题答案: 是的,这真是令人讨厌。 我使用的解决方法是强制客户端在构造新类时传递类-即 然后您可以使用。

  • 我试图写一个通用函数,它将尝试将字符串转换为数字类型,如,等。如果字符串不可转换,那么它将返回。我正在寻找一个适当的特性绑定到我下面的通用函数中使用: 游乐场链接 我发现Rust有一个特征,在它被删除之前。现在还有别的东西可以代替吗? 我找到了一个变通方法: 游乐场链接 正如trait绑定所建议的,这应该适用于同时具有和实现的任何函数,我应该重命名函数以反映这一点,但是,如果知道基本数字类型是否有