向下转换是一种必要的恶魔,例如在处理返回非泛型集合的旧API时.另一个经典的例子是equals方法:
public class Phleem{
public Phleem(final String phloom){
if(phloom == null){
throw new NullPointerException();
}
this.phloom = phloom;
}
private final String phloom;
public String getPhloom(){
return phloom;
}
@Override
public boolean equals(final Object obj){
if(obj instanceof Phleem){
// downcast here
final Phleem other = (Phleem) obj;
return other.phloom.equals(phloom);
}
return false;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
我想不出一个例子,其中Upcasting是必要的.好的,从方法中返回最不具体的可能Object是一个好习惯,但这可以完全不用强制转换完成:
public Collection<String> doStuff(){
// no casting needed
return new LinkedHashSet<String>();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7409 次 |
| 最近记录: |