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

泛型-函数返回类型是否与参数类型相同?

燕鸿波
2023-03-14

我想使返回数据类型的List的函数与传入的参数的数据类型相同。例如,我会这样调用函数:

Object a = new Object();
List<Object> aList = foo(a);

Integer b = 5;
List<Integer> bList = foo(b);

因为我将一个对象传递给foo,所以它返回了一个列表

如果这是不可能的,我也可以使用语法,比如:

Object a = new Object();
List<Object> aList = foo(Object.class, a);

我以前多次使用泛型,但我不知道如何在返回类型中定义数据类型,然后说相同的数据类型将用于参数

List<T> foo(T data)
{
   ...
}

还是一定要像<代码>列表


共有2个答案

滑文昌
2023-03-14

我忘了你可以在返回类型之前添加一个类型。

<T> List<T> foo(T bar)
{
    ...
}
谯乐池
2023-03-14

您需要在函数的返回类型之前指定泛型类型,比如:

public static <T> List<T> foo(T data) {
    return new ArrayList<>();
}
 类似资料:
  • 我试图创建一个Java方法,它接受一个对象类型和它应该转换成的数据类型。 例如,如果我应该能够返回一个值1作为Int或双根据需要。我使用类传递数据类型作为参数。 问题:如何使方法泛型以接受基于输入参数的返回类型? 下面的代码只是一个示例,它可能在语法上不正确,用于解释我的问题。

  • 我试图创建一个返回泛型类型参数的方法。 我有一个类车辆订单扩展抽象类订单。在类订单中,我创建了一个抽象方法接收HiredObject。这个方法不会接收任何参数,并将返回一个泛型。 我在VehicleOrder类中实现了这个方法,并将其设置为返回类参数vehicle。 问题是,当我实例化一个新的VeilceOrderorororororororororororororderororororororo

  • 我想通过TypeScript泛型定义函数返回类型。所以R可以是我将定义的任何东西。 <代码>。。。许诺 错误:(29,9)TS2322:类型“字符串”不可分配给类型“R”。“字符串”可分配给类型“R”的约束,但“R”可以用约束“{}”的不同子类型实例化。

  • (沙盒) 获取此错误: 类型“number”不可分配给类型“T”“number”可分配给“T”类型的约束,但“T”可以用约束{}的不同子类型实例化。(2322)输入。ts(1,26):预期类型来自此签名的返回类型。 我希望typescript能够自动推断T为数字,然后直接使用它。为什么它在抱怨?写这样的东西的正确方法是什么?谢谢

  • 我在我的Java程序中写了这个函数: 这就是我所说的: 它是有效的,但我觉得我应该能够省略第一个参数,并从返回类型(结果被分配到的类型)推断出它。这可能吗?如果是,语法是什么?

  • 问题内容: 我有一个方法以a 作为参数。 在中,我如何知道a 是还是a 是? 问题答案: 根据用户omain的回答“如果使用<?>,则意味着您将不会在任何地方使用参数化类型。要么转到特定类型(在您的情况下,似乎是),要么转到非常通用的“ 另外,我相信如果您使用问号,编译器将在运行时(类型;有效Java的第119页)消除类型不匹配的情况,绕过擦除,并有效地消除了使用泛型类型所带来的好处? 要回答发问