所以我现在的代码是这样的。我们的想法是使用通用类型T来接收不同类的实例,并返回这些实例。
我应该能够像这样调用类的实例。
new A().add(new B())
public static <T> T <T> add(T t) {
return new T();
}
基本上对我来说,返回类型应该是类本身,这样它就可以通过返回类型获取一个新的实例。
谁能指导我,我的逻辑哪里出了问题?
你不能仅仅从通用类型中调用构造函数,因为 1. 类型擦除意味着: 2. T
化为 Object
(或不管它的上界是什么)在运行时,2.你不知道构造函数一定会接受0个参数。
更好的方法是用一个 Supplier
public static <T> T add(Supplier<T> supplier) {
return supplier.get();
}
而你可以这样使用这个方法。有了方法引用,就很简洁了。
B b = YourClass.add(B::new);