【发布时间】:2014-06-08 07:53:24
【问题描述】:
我正在创建一个具有泛型类型的函数,而该泛型类型是我需要实例化的抽象类型。这段代码会解释得更清楚:
public <T extends AbstractRow> foo(){//no I did not actually name the function foo
ArrayList<T> arr=new ArrayList<T>();
arr.add(new T(...)); //cant instantiate objects of abstract class
}
基本上我想强制执行“T 扩展 AbstractRow 但不是 Abstract 本身”。
我知道你不能实例化抽象类,所以我想要一个解决方法或其他方法的建议,让我可以模仿创建泛型对象的行为。
【问题讨论】:
-
除非实现所有抽象方法,否则无法实例化抽象类。
-
我意识到这一点。我需要一个“解决方法”或一些关于如何使这样的实现工作的想法,我需要实例化一个泛型类型的对象
-
各位,什么时候可以直接实例化泛型类型呢?
-
@drewmore 如果你有
AbstractRow的非抽象子类,你可以做T t = (T) new SubClassName(); -
@Christian 是的,你可以,但这不是直接实例化泛型类型 - 它是实例化具体类型并将其强制转换为泛型类型
标签: java generics abstract-class