我有一个通用的“容器”,除其他事项外,还需要能够创建其“类型参数”的实例:
class Item { }
class BaseContainer<T extends Item> {
T makeNew() {
return new T() as T; // compile-time error
}
}
但是,这会在new T()
附近导致编译时错误:“名称'T'不是类。请尝试更正名称以匹配现有的类”。
为了进行比较,在子类内部定义方法可以正常工作,因为在这种情况下我可以避免使用type参数:
class Container extends BaseContainer<Item> {
Item makeNew() {
return new Item(); // works correctly
}
}
但这是次优的,因为我需要在BaseContainer
的每个子类中定义此方法。
在泛型超类中是否可以使用“泛型” makeNew
方法?