作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我能理解什么是向上转型,但向下转型有点令人困惑。我的问题是我们为什么要沮丧?你能帮我举一个现实世界的例子吗?沮丧有那么重要吗?
最佳答案
向下转型是一个必要之恶,例如在处理返回非泛型集合的遗留 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;
}
// ...
}
不过,我想不出一个需要向上转型的例子。好的,从方法中返回尽可能不具体的对象是一种很好的做法,但这完全可以在不强制转换的情况下完成:
public Collection<String> doStuff(){
// no casting needed
return new LinkedHashSet<String>();
}
关于java - java中的向上转型和向下转型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4013215/
在Java编程中经常碰到类型转换,对象类型转换主要包括向上转型和向下转型。 向上转型 我们在现实中常常这样说:这个人会唱歌。在这里,我们并不关心这个人是黑人还是白人,是成人还是小孩,也就是说我们
当使用使用 C 风格继承的 C API 时,(利用 C 结构的标准布局),例如 GLib ,我们通常使用 C 风格的转换来向下转换: struct base_object { int x;
我是一名优秀的程序员,十分优秀!