【发布时间】:2009-05-04 16:37:22
【问题描述】:
我有以下课程:
abstract class DTO{ }
class SubscriptionDTO extends DTO { }
以及以下通用方法:
protected void fillList(ResultSet rs, ArrayList<? extends DTO> l)
throws BusinessLayerException {
SubscriptionDTO bs;
try {
while (rs.next()){
//initialize bs object...
l.add(bs); //compiler error here
}
} catch (SQLException e) {
e.printStackTrace();
}
}
我似乎无法理解为什么您不能创建一个通用方法来填充 DTO 子类型。我做错了什么还是设计使然?如果是这样,是否有任何解决方法?提前致谢。
【问题讨论】:
-
要回答,我需要看看你是如何初始化bs的,至少是类型声明。
-
我认为您无法按计划编写泛型方法,因为您需要知道 bs 对象的确切类型才能创建它。例如,new SubscriptionDTO() 或 new DeliveryDTO()。
-
@javashlook -你是对的。 mmyers 的解释足以让我意识到这一点。看来我会继续使用原始解决方案来解决这类问题。