有关泛型的返回类型(需要返回不同类的实例)的问题

时间:2020-05-29 01:53:06

标签: java generics jshell

所以我当前的代码如下所示。这个想法是使用通用类型T接收不同类的实例,然后返回这些实例。

我应该能够调用此类的实例

new A().add(new B())
    public static <T> T <T> add(T t) {
        return new T();
    }

对我来说,返回类型应该是类本身,以便它可以通过返回类型获取新实例。

有人可以指导我我的逻辑哪里出问题了吗?

1 个答案:

答案 0 :(得分:1)

您不能仅从泛型类型调用构造函数,因为1.类型擦除意味着Carbon::parse($time)->startOfMinute()->toDateTimeString() 在运行时变成T(或任何上限),而2.您没有不知道构造函数必须接受0个参数。

一种更好的方法是使用Supplier

Object

,您可以使用这种方法。使用方法引用,它非常简洁。

public static <T> T add(Supplier<T> supplier) {
    return supplier.get();
}
相关问题