【发布时间】:2012-05-19 20:49:35
【问题描述】:
我有一个 Dogs 类列表,它扩展了 Animals 并有一个以下类型的列表。
ArrayList<Animals> animal = new ArrayList<Animals>();
现在我有另一个类,Puppy,它扩展了 Dogs。
还有一个List<Puppy> puppy = new ArrayList<Puppy>();
现在我想将列表animal 转换为puppy。可以直接做吗?
我可以按如下方式进行。
for (Animals ani: animal){
puppy.add((Puppy) ani)
}
但我想要一个直接投射解决方案。有可能吗?
【问题讨论】:
-
定义“直接铸造解决方案”?
-
如果您有一个实际上是狗的动物列表,并且您想处理狗而不是动物,那么为什么您的列表是动物列表?
-
从 Vakimshaar 的评论开始,如果您的代码需要大量像这样的危险转换(可能导致异常),那么您可能应该重新考虑您的代码。例如。而不是像这样添加小狗,而是调用动物类中的一个方法,将它们添加到适当的列表中......为每个子类覆盖该方法
-
这个演员阵容没有什么危险的@PerryMonschau
标签: java