は完全に合理的であるが、このようなケースでは、私はそれがより良いブール死のチェックを提供することを見つける:
public boolean isDead() {
return deathDate != null;
}
これは死を確認する合理的な方法を提供しています属性の不器用なヌルチェックなしのインスタンスの-ness:
:
// this is ugly and exposes the choice of the value of the field when alive
if (animal.getDeathDate() != null) {
// the animal is dead
}
代わりにisDead()
方法で、あなたはこれを行うには、あなたの権利範囲内であろう私はあなたのクラスの設計に問題があることを主張するだろうが、カメの飛行速度については
public Date getDeathDate() {
if (deathDate == null)
throw new IllegalStateException("Death has not occurred");
return deathDate;
}
、あなたは、同じアプローチを適用することができ - ないすべての動物が飛ぶが、そうAnimal
クラスがgetFlyingSpeed()
を持つべきではありません方法。
interface Flyer {
Integer getFlightSpeed();
}
class Animal {}
class Turtle extends Animal {}
class Eagle extends Animal implements Flyer {
public Integer getFlightSpeed() {
//
}
}
Nullオブジェクトパターンが必要な場合があります。 – SLaks
ヌルオブジェクトパターンについて読んだけど、ヌル変数を持つオブジェクトを扱っているかどうかはわかりませんでした。私はnullまたはオブジェクトがデータオブジェクトではなくクエリメソッドから返されるべきかどうかに関連すると考えました。 – FooBar
Nullオブジェクトパターンは基本的にすべてのヌルに適用されます。 null以外の値を保証すると、コードがはるかに簡単になります。 – zapl