说我有这个班:
public class BaseJob{
String name;
public void setName(String name){
this.name=name;
}
public String getName()
{
return name;
}
}
Run Code Online (Sandbox Code Playgroud)
和另一个扩展它的类:
public class DetailedJob extends BaseJob{
public void doThing();
}
Run Code Online (Sandbox Code Playgroud)
此外,我在另一个类中有这个方法:
List<BaseJob> getSomeJobs()
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是:
是否可以避免在返回的getSomeJobs列表中按顺序转换每个项目,如果我确定每个返回的BaseJob确实是一个DetailedJob?
换句话说,是否有另一种解决方案,而不是以下解决方案来强制列表中的所有项目
List<BaseJob> baseJobList = getSomeJobs();
List<DetailedJob> detailedJobList = new ArrayList<DetailedJob>();
for (BaseJob baseJob : baseJobList)
detailedJobList.add((DetailedJob) baseJob);
Run Code Online (Sandbox Code Playgroud)
您可能想要做的是参数化定义的类getSomeJobs
.
public final class JobHolder<T extends BaseJob> {
public List<T> getSomeJobs() {
...
Run Code Online (Sandbox Code Playgroud)
通常未经检查的演员表示设计问题.在某些情况下,例如低级实现和处理序列化时,它们是不可避免的.
归档时间: |
|
查看次数: |
4098 次 |
最近记录: |