关于泛型中 return 类型(需要 return 不同 类 的实例)的问题

Question about return type( need to return instances of different classes) in generics

所以我当前的代码如下所示。这个想法是使用通用类型 T 和 return 这些实例来获取不同 classes 的实例。

我应该能够像这样调用 classes 的实例

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

基本上对我来说,return 类型应该是 class 本身,这样它就可以通过 return 类型获取一个新实例。

谁能指导我我的逻辑哪里出了问题?

您不能仅从泛型类型调用构造函数,因为 1. 类型擦除意味着 T 在运行时变成 Object(或其上限是什么),以及 2.你不知道构造函数必须接受 0 个参数。

更好的方法是使用 Supplier

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

你可以像这样使用这个方法。加上方法引用,还是挺简洁的。

B b = YourClass.add(B::new);