問題タブ [instanceof]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
design-patterns - instanceof の代替?
instanceof または同等のものを使用するのは悪い設計だと聞いたことがあります ( http://www.javapractices.com/topic/TopicAction.do?Id=31、 instanceof を使用する必要がある場合と使用しない場合は? ) これには同意できますこれは主に、コードの再利用が難しくなる可能性があるためです。
ただし、場合によっては、instanceof に代わる優れた方法を思いつくのが難しいことがわかりました。たとえば、リアルタイム ストラテジー ゲームを作りたいとします。ゲームは障害物、建物、戦車で構成され、すべてグリッド上に配置され、各エンティティはグリッド内の 1 つのユニットを占有します。そこで、クラス Obstacle、Building、および Tank のスーパークラスであるクラス Entity を作成します。グリッドはエンティティのインスタンスで構成されます。各更新中に、各戦車が範囲内の敵戦車を狙って発砲するようにします。したがって、これを行う簡単な方法は、各タンクがグリッドにタンク範囲内のすべてのエンティティを要求し、これらすべてのエンティティを繰り返し処理して、クラス Tank のインスタンスであるかどうかを確認することです。
instanceof を使用する代わりに私の唯一の試みは、デザイン パターンVisitorを使用することでした。(entity->acceptVisitor(visitor))
訪問者は、メソッドの 1 つまたは を呼び出すvisitor->visitObstacle(this)
エンティティvisitor->visitBuildig(this)
によって受け入れられvisitor->visitTank(this)
ます。ただし、これにより、多数のビジターを作成する必要があり、エンティティに対して作成したいタスクごとにほぼ 1 つの新しいビジターを作成する必要がありました。もう 1 つの問題は、エンティティがどのクラスから構築されているかに関係なく、多くの場合、ビジターがエンティティに対して同じメソッドを呼び出すことです。これは、たとえば、エンティティが別のエンティティが静止しているかどうかを確認したい場合に発生する可能性があります。
#Python コード:
もちろん、この場合、訪問者にそうさせる代わりに、エンティティが静止しているかどうかを別のエンティティに直接尋ねるようにすることもできます。しかし、その場合、エンティティのプロパティのチェックに一貫性がありません。エンティティ タイプをチェックする必要があるかどうかに応じて、(直接またはビジターを通じて) いくつかのプロパティについてエンティティに問い合わせる方法を変更できるようにすることは、私の意見では、かなり奇妙な設計のように思えます。
では、上記の問題で instanceof を使用する他の方法はありますか?
java - オブジェクトがパラメータタイプのインスタンスであるかどうかをテストします
オブジェクトがジェネリック型のインスタンスであるかどうかを判断する方法はありますか?
それは明らかに機能しません。代替手段はありますか?Javaリフレクションを使用してクラスをインスタンス化し、それがジェネリック型であることを確認したいのと同じですT
。
javascript - JavaScriptの新しいString( "x")のポイントは何ですか?
行うためのユースケースは何new String("already a string")
ですか?
それの全体的なポイントは何ですか?
java - 私の混乱:Javaでの考察
型情報とリフレクションに関する「ThinkinginJava」の章を読み終えたところです。私には非常に自然にinstanceof
思えますが、反省のいくつかの例は私を混乱させました。リフレクションがJavaプロジェクトで広く使用されているかどうか知りたいですか?リフレクションの「良い部分」とは何ですか?より良い、価値のある例を使って、振り返りとタイプ情報についての興味深い講義を提案できますか?
編集(もう1つの質問):
プライベートメソッドとフィールドにアクセスするのが便利なのはなぜjava.lang.reflect.Method.setAccesible()
ですか?
前もって感謝します。
java - これの循環的複雑さをどのように減らすことができますか?
オブジェクトを受け取り、検出したオブジェクトのタイプに基づいて何かを行うメソッドがあります。
循環的複雑度を減らすにはどうすればよいですか? 私は周りを検索しましたが、あまりにも有用なものを見つけることができませんでした.
java - Java: ジェネリックが int かどうかを確認する
Key が int かどうかを確認したいので、コンストラクターに次の行を配置します。
ただし、次の方法で作成します。
そして、いまいましい TypeOfKeyStillNotSupportedException() がポップします。なぜこれが起こっているのですか、どうすれば適切に行うことができますか?
前もって感謝します。
編集: null が割り当てられているキーに問題があることが既にわかっています。問題は次のとおりです。チェックを行う方法は?
javascript - Javascript instanceofはどの程度正確に機能しますか?スロースタイルですか?
instanceof
「巨大な図書館」のフェアのパフォーマンスはどうですか?
これと同じように、プロトタイプチェーンを1つずつ上に移動しますか?:
instanceof
すべてのオブジェクトのプロパティに一意のインターフェイスID番号を格納する場合と比較して、比較的パフォーマンスが低くなります。
javascript - この instanceof エラー メッセージはどういう意味ですか?
instanceof
Chromeでいじっていましたが、エラーメッセージが表示されました。理由はわかっていると思いますが (オブジェクトが作成されたコンストラクターであるキーワードの後に関数を指定する必要instanceof
があります)、エラー メッセージは別のことを示しているようです:
[1,2,3]
これは、関数に置き換える必要があるということですか? [1,2,3]
それは正しいことであり、それが問題であり、関数に置き換える必要があると思います[]
が、エラーメッセージは反対のことを言っているようです.
エラーメッセージを間違って解釈している方法を誰か説明してもらえますか?
java - Java で「instanceof」を回避する
私は次の(おそらく一般的な)問題を抱えており、現時点では完全に困惑しています:
抽象クラスを拡張する生成されたイベント オブジェクトがいくつかあり、Event
それらをセッション Bean に分割したいと考えています。
しかし、将来的には 2 つ以上のイベント タイプが存在する可能性があるため、if-else は長くなり、判読不能になる可能性があります。instanceof
さらに、この場合、実際には「ベストプラクティス」ではないと思います。
型に抽象メソッドを追加して、Event
それ自体を分割することもできますが、各エンティティ内に特定のセッション Bean を注入する必要があります。
この問題の「きれいな」解決策を達成するためのヒントはありますか?
助けてくれてありがとう!