固有の型安全性を備えた言語(たとえばJavaScriptではない)を想定:
を受け入れるメソッドを考えるSuperTypeと、ほとんどの場合、アクションを選択するために型テストを実行するように誘惑される可能性があることがわかります。
public void DoSomethingTo(SuperType o) {
if (o isa SubTypeA) {
o.doSomethingA()
} else {
o.doSomethingB();
}
}
通常は、常にではありませんが、単一のオーバーライド可能なメソッドを作成し、SuperTypeこれを行う必要があります。
public void DoSomethingTo(SuperType o) {
o.doSomething();
}
...ここで、各サブタイプには独自のdoSomething()実装が与えられます。アプリケーションの残りの部分は、与えられたものSuperTypeが実際にaであるSubTypeAかa であるかを適切に無視できますSubTypeB。
素晴らしい。
しかし、is aすべてではありませんが、ほとんどのタイプセーフ言語で-のような操作が与えられています。そして、それは明示的な型テストの潜在的な必要性を示唆しています。
だから、何で状況は、もしあれば、必要があります我々たりはしなければならない我々は、明示的な型のテストを実行しますか?
私の不在や創造性の欠如を許してください。私は前にそれをやったことを知っています。しかし、正直なところ、私がやったことが良いかどうか覚えていません!そして最近の記憶では、カウボーイJavaScriptの外部で型をテストする必要に遭遇したとは思いません。