1. ホーム

[解決済み】Javaの「instanceof」の使い方【重複あり

2022-03-28 23:41:46

質問

<ブロッククオート

instanceof' 演算子は何に使うのですか?

私は、Javaには instanceof 演算子です。この演算子が使われる場所とその利点を詳しく教えてください。

どのように解決するのですか?

基本的には、あるオブジェクトが特定のクラスのインスタンスであるかどうかをチェックします。 通常、スーパークラスやインターフェイスの型を持つオブジェクトへの参照やパラメータがあり、実際のオブジェクトが他の型(通常はより具体的な型)を持っているかどうかを知る必要があるときに使用します。

public void doSomething(Number param) {
  if( param instanceof Double) {
    System.out.println("param is a Double");
  }
  else if( param instanceof Integer) {
    System.out.println("param is an Integer");
  }

  if( param instanceof Comparable) {
    //subclasses of Number like Double etc. implement Comparable
    //other subclasses might not -> you could pass Number instances that don't implement that interface
    System.out.println("param is comparable"); 
  }
}

もし、この演算子を頻繁に使わなければならないのであれば、それは一般的に設計に何らかの欠陥があることを示唆するものであることに注意してください。ですから、よく設計されたアプリケーションでは、その演算子をできるだけ使わないようにしなければなりません(もちろん、その一般的なルールに例外はあります)。