問題タブ [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.

0 投票する
6 に答える
121016 参照

java - リフレクションを使用せずにオブジェクトが配列であるかどうかを確認するにはどうすればよいですか?

オブジェクトがリフレクションを使用せずに配列であるかどうかをJavaで確認するにはどうすればよいですか?また、リフレクションを使用せずにすべてのアイテムを反復処理するにはどうすればよいですか?

私はGoogleGWTを使用しているので、リフレクションを使用することは許可されていません:(

refelectionを使用せずに次のメソッドを実装したいと思います。

ところで:GWT以外の環境で使用できるようにJavaScriptも使用したくありません。

0 投票する
7 に答える
39732 参照

java - instanceofは悪い習慣と見なされますか?もしそうなら、どのような状況下でinstanceofはまだ好ましいですか?

何年にもわたって、私はinstanceof可能な限り避けるように努めてきました。必要に応じて、ポリモーフィズムまたはビジターパターンを使用します。状況によってはメンテナンスが簡単になると思いますが…他に注意すべき欠点はありますか?

しかし、私はそれをJavaライブラリのあちこちで見ているので、その場所があると思いますか?どのような状況でそれが望ましいですか?やむを得ないことはありますか?

0 投票する
2 に答える
4157 参照

java - リフレクション:instanceofを使用せずにオブジェクトをサブクラスにキャストします

私はこの単純なインターフェース/クラスを持っています:

そしてユーティリティクラス:

さて、メインクラス:

出力は

私はそれp.handler(m)がメソッドを呼び出すだろうp.handler(m:Message1)

instanceof多くの場合があるので、「手動」コマンドを使用したくありません。


呼び出すm.getClass()と、「mypackage.Message1」が取得されるため、スーパークラスではなくサブクラスが取得されます。

私はこのコードで試してみます(リフレクションを使用):

しかし、出力は

だから、これは私の問題です。「コードコマンド」istanceofを使用せずに、スーパークラスオブジェクトからサブクラスオブジェクトへのランタイムキャストを実行します。

私はこのような正しいコマンドをします:

どうすれば入手できますか?それが可能だ?

0 投票する
9 に答える
77588 参照

java - Java での instanceof の回避

「instanceof」操作のチェーンを持つことは、「コードの匂い」と見なされます。標準的な答えは、「ポリモーフィズムを使用する」です。この場合、どうすればよいでしょうか?

基本クラスにはいくつかのサブクラスがあります。それらのどれも私の管理下にはありません。同様の状況は、Java クラスの Integer、Double、BigDecimal などにも当てはまります。

私は NumberStuff などを制御できます。

数行で済むところに多くのコード行を使用したくありません。(時々、Integer.class を IntegerStuff のインスタンスに、BigDecimal.class を BigDecimalStuff のインスタンスにマッピングする HashMap を作成します。しかし、今日はもっと単純なものが必要です。)

私はこのような単純なものが欲しいです:

しかし、Java はそのようには機能しません。

書式設定時に静的メソッドを使用したいと思います。私が書式設定しているものは複合であり、Thing1 には配列 Thing2 を含めることができ、Thing2 には Thing1 の配列を含めることができます。次のようにフォーマッターを実装したときに問題が発生しました。

はい、私は HashMap を知っており、もう少しコードを修正することもできます。しかし、「instanceof」は比較すると非常に読みやすく、保守しやすいようです。シンプルだけど臭くないものってありますか?

2010 年 5 月 10 日に追加された注:

新しいサブクラスが将来追加される可能性が高く、既存のコードでそれらを適切に処理する必要があることがわかりました。その場合、クラスが見つからないため、クラスの HashMap は機能しません。最も具体的なものから始まり、最も一般的なもので終わる一連の if ステートメントは、結局のところ、おそらく最適です。

0 投票する
3 に答える
264 参照

java - instanceof が静的ジェネリック関数で機能しているように見えることがあるのはなぜですか?

ご挨拶。これは、このサイトでの私の最初の投稿です。

タイプ eraserのため、次のコードがコンパイルされることは期待できないと思いました。実際、以前のバージョンの Eclipse ではコンパイルされませんでした。私の理解では、instanceofは実行時の演算子であり、実行時にコンパイルされるジェネリック型について知ることができませんでした。

しかし、あなたのスレッドの 1 つに実際にこのようなコードが回答に含まれているのを見て驚きました。私の最新の Eclipse (JVM 1.6 rev 20 を搭載した Windows 上の Galileo) はそれに完全に満足しており、それも機能します。(誰かがEclipseでは動作したが、そのスレッドの別のIDE / JDKでは動作しないと言ったことに気付きましたが、詳細は覚えていません。)

誰かがそれが機能する理由を説明できますか?さらに重要なことは、将来的に機能することが期待されるかどうか、学生を指導する必要があるためです.

ありがとうございました。(コードの書式設定が正しく行われることを願っています。私の観点からは正しくインデントされているように見え、タブはありません。)

0 投票する
1 に答える
141 参照

java - 両方とも二重にディスパッチする必要がある 2 つのパラメーターを持つメソッド

2 つのパラメーターを持つメソッドがあるとします。私はそれらを次のように実装しています:

ご覧のとおり、あまりきれいなソリューションではありません。私は二重ディスパッチを使用して実装する予定ですが、両方とも二重ディスパッチが必要な 2 つのパラメーターがあるため、少し困惑しています。アイデアをください。

私はところでJavaで実装しています。

0 投票する
1 に答える
956 参照

javascript - javascript instanceof 文字列名から型を取得

私がこれを持っているとしましょう(name変数が「receiver」であると仮定します):

このコードを共通のメソッドに分解して、次のように呼び出すことができるようにしたいと思います。

com.HTMLReceiverしかし、文字列から実際の型に変換して使用できるようにする方法がわかりません instanceof

方法はありますか?

0 投票する
2 に答える
6634 参照

java - スレッド間でオブジェクトを渡すときに instanceof を使用することは可能ですか?

instanceof が機能する問題に遭遇しましたが、機能しません。詳細に入るのは難しいですが、これが問題かもしれないと思います:

これを読む:http : //www.theserverside.com/news/thread.tss?thread_id=40229(Thread.currentThreadを検索)、2つのオブジェクトが同じクラスであっても、それらを渡すとそれを暗示しているようです異なるクラス ローダーを持つスレッド間では、instanceof (および isAssignableFrom) が引き続き失敗する可能性があります。

これは確かに私が持っている動作を説明するでしょうが、誰かがそれを確認できるかどうか疑問に思っていましたか?

(議論の最初にリンクされた記事がまだ利用可能であることを願っていますが、そうではないようです。)

0 投票する
1 に答える
191 参照

java - 特定のインターフェースを実装し、特定のスーパークラスを持つパラメーター: ジェネリックまたはインスタンス?

特定のデザインに関するヘルプがあれば幸いです。これは私が働きたいコードです:

つまり、Canvas は Interface という仕様を実装する必要がありますが、描画メソッドはJPGExportable を実装する Square と Circle のサブクラスのみを処理する必要があります。

私の知る限り、機能する解決策は 2 つありますが、どちらもあまりきれいではないと思います。

実際には、Square と Circle はかなり異なるため、共通のスーパークラスに共通のコードを含めることができないのはなぜですか。また、JPGExportable を実装するスーパークラスは...間違っていると感じます。それは本当にサブ機能です。

私がジェネリック方式を好まない根本的な理由は、7 つの異なる型を処理する必要があるからです。私がうるさいのかもしれませんが、「T extends Type」が 7 回連続して出現するのは見栄えが悪いです。

  • 見栄えの良い 3 番目のソリューションはありますか?
  • そうでない場合、どちらが「より良い」ですか?
0 投票する
2 に答える
187 参照

java - instanceof を使用するよりも条件付きで型を作成するためのより良い/よりクリーンな方法はありますか? 【ジャワ】

私が持っているとします:

問題は、MobileSuitCollection がインターフェイスであるため、インスタンス化できないことです。たとえば、次のことができます。

など。ただし、を操作するtemporaryCollectionには、パラメーターを介してクラスに渡されたものと同じタイプである必要があります。だから私はこれを行うことを考えました:

しかし、それはひどいことだと思います。これを行うより良い方法はありますか?初期型で使用されるクラスへの参照を保持し、それをインスタンス化することは可能temporaryCollectionでしょうか?