我有3节课, Z类, calss A 实现 OInterface,calss B 实现 OInterface .
我想创建一个将 Z 列表转换为 OInterface 列表的函数
List<OInterface > myfunction(List<Z> mylist){
List <OInterface > ret=new List <OInterface >;
for (Z z : mylist){
OInterface tmp=new OInterface ()
tmp.a=z.a
tmp.b=z.b
ret.add (tmp)
}
return ret;
}
我可以像这样使用:
List<Z> zzz=...
List<A> aaa=myfunction(zzz);
List<B> aaa=myfunction(zzz);
当然这不能编译,它更像是伪代码来显示我想要做什么。
有办法实现吗?
最佳答案
由于 Z 未实现 OInterface
,因此您永远无法通过任何方法将 Z“转换”为 OInterface
。这显然是设计使然 - 您拥有 OInterface
的首要原因是为了确保您始终可以保证继承对象的形状 .
您要么必须让 Z 实现 OInterface
,要么编写一个将 Z 转换为 A 和/或 Z 转换为 B 的方法,然后创建 A 或 B 的列表。
只有这样,您才能将其视为 OInterface 元素的列表 - 然后您可以执行以下操作:
OInterface anObject = aaa[0];
关于java - 创建一个可以转换不同类列表的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7955993/