2

この演算子を発見したばかりで、安全に使用できるかどうか疑問に思っていました。つまり、Java では、instanceof() はポリモーフィズムを壊し、しばしば貧弱なコーディングを示すため、私たちの教師は常にインスタンスオブ() を避けるように私たちに言いました。

よろしくお願いします。

4

2 に答える 2

4

安全です'。少なくとも、キャストして型を仮定するよりも、このチェックを使用する方が安全です! as演算子を使用することをお勧めします。この演算子は、適切な場合は必要な型へのキャストを実行し、それ以外の場合は null を返します。null をチェックすることを忘れないでください。

しかし、多くの場合、明示的な型チェックは、モデルに何かが正しくないことを示しています。やむを得ない場合もありますが、これを頻繁に行っている場合は、一歩下がってモデルを再検討します。

于 2012-07-03T08:43:22.830 に答える
2
if (obj is FooObject)
{
    ((FooObject)obj).Foo();
}

に等しい

if (obj instanceof FooObject) {
    ((FooObject)obj).foo();
} 
于 2012-07-03T08:44:43.097 に答える