この演算子を発見したばかりで、安全に使用できるかどうか疑問に思っていました。つまり、Java では、instanceof() はポリモーフィズムを壊し、しばしば貧弱なコーディングを示すため、私たちの教師は常にインスタンスオブ() を避けるように私たちに言いました。
よろしくお願いします。
この演算子を発見したばかりで、安全に使用できるかどうか疑問に思っていました。つまり、Java では、instanceof() はポリモーフィズムを壊し、しばしば貧弱なコーディングを示すため、私たちの教師は常にインスタンスオブ() を避けるように私たちに言いました。
よろしくお願いします。
安全です'。少なくとも、キャストして型を仮定するよりも、このチェックを使用する方が安全です! as演算子を使用することをお勧めします。この演算子は、適切な場合は必要な型へのキャストを実行し、それ以外の場合は null を返します。null をチェックすることを忘れないでください。
しかし、多くの場合、明示的な型チェックは、モデルに何かが正しくないことを示しています。やむを得ない場合もありますが、これを頻繁に行っている場合は、一歩下がってモデルを再検討します。
if (obj is FooObject)
{
((FooObject)obj).Foo();
}
に等しい
if (obj instanceof FooObject) {
((FooObject)obj).foo();
}