关于泛型中 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);
所以我当前的代码如下所示。这个想法是使用通用类型 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);