假设我有以下代码:
public boolean doesElfLikeIt ( Monster mon )
{
if ( mon instanceof Orc ) { return false; }
if ( mon instanceof Elf ) { return true; }
}
Run Code Online (Sandbox Code Playgroud)
这是一个很好的编程方法还是我应该选择这样的东西:
public boolean doesElfLikeIt ( Monster mon )
{
if ( mon.getType() == Orc.type ) { return false; }
if ( mon.getType() == Elf.type ) { return true; }
}
Run Code Online (Sandbox Code Playgroud)
我问这个的原因是因为我听到很多关于instanceof比较有多邪恶,但我发现它很有用.
都不是.你真正应该做的是:
class Monster {
public abstract boolean likesElves();
}
class Orc extends Monster {
public boolean likesElves() {
return false;
}
}
class Elf extends Monster {
public boolean likesElves() {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2442 次 |
| 最近记录: |