問題タブ [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.
java - JavaにinstanceOf(Class c)のようなものはありますか?
オブジェクトが のクラスまたはサブクラスのo
インスタンスであるかどうかを確認したい。C
C
たとえば、がになりたいp
クラスであり、になりたい場合です。Point
x.instanceOf(Point.class)
true
x.instanceOf(Object.class)
true
ボックス化されたプリミティブ型でも機能するようにします。たとえば、 if x
is はInteger
thenx.instanceOf(Integer.class)
である必要がありますtrue
。
そのようなことはありますか?そうでない場合、どうすればそのようなメソッドを実装できますか?
java - Java の instanceof と isInstance() に相当する VB は何ですか?
C#の質問の精神で..
VB.NET でクラス タイプを比較する同等のステートメントは何ですか?
java - インスタンスオブと型キャストのテクニック
解決すべき実際の問題ではなく、技術と実装について質問があります。最近、サブクラスの共通の動作を定義する抽象クラスを作成しました。これを A と呼びましょう。
これを使用して、いくつかのサブクラス B、C、および D を構築し、それらをタイプ A を受け取るスーパークラス - サブクラス構造の外部にある他のメソッドに渡します (したがって、B、C、および D のすべてを処理できます)。
Java では、instanceof を使用して真の型を取得しますが、実際の型に多くのキャストを行う必要があり、混乱しているように見えます。コードをよりきれいにする方法について何か提案はありますか?
私が試した方法の 1 つは、スーパークラスのパラメーターからサブクラス型のインスタンスを再構築することでした。これにより、実際の型でオブジェクトを処理し、型キャストを回避できました。これらのサブクラスはそれぞれシングルトンなので (そうです、状態を維持します)、そうしても問題ないと思います。これは面倒なことのように思えますか?
答えてくれた人に感謝します。
編集:イタリック体でさらに明確化を追加しました。ありがとう。
javascript - オブジェクトがJavascriptで配列かどうかを確認する最良の方法は何ですか?
次のような関数があるとします。
を呼び出しfoo(1)
たとします。それが配列を返すかどうかはどうすればわかりますか?
java - メッセージ タイプをチェックするときの instanceof の回避
クライアント クラスが受信するメッセージの種類に基づいて異なる動作を実行する次のような状況があります。instanceof ステートメントと if ステートメントが気に入らないので、これを行うためのより良い方法があるかどうか疑問に思っています。
私が考えたことの 1 つは、メソッドをクライアント クラスから引き出してメッセージに入れることでした。IMessage インターフェイスに process() のようなメソッドを配置し、具体的なメッセージ タイプのそれぞれにメッセージ固有の動作を配置します。これにより、タイプをチェックするのではなく message.process() を呼び出すだけなので、クライアントが単純になります。ただし、これに関する唯一の問題は、条件に含まれる動作が Client クラス内に含まれるデータの操作に関係していることです。したがって、具体的なメッセージ クラスにプロセス メソッドを実装した場合、それをクライアントに渡す必要があり、これが本当に意味があるかどうかもわかりません。
oop - この場合、instanceofをどのように置き換えることができますか?
私はcompareCriteriaを比較しようとしています。'between'と'inArray'または'greaterThan'のような単純なもの。これらのクラスにはポリモーフィズムを使用します。compareCriteriaインターフェースから共有する1つのメソッドは、「matchCompareCriteria」です。
私が避けようとしているのは、各クラスに、照合する必要のあるcompareCriteriaのタイプをチェックさせることです。たとえば、inArrayオブジェクトは、matchCompareCriteriaがinArrayオブジェクトに渡されたかどうかをチェックします。渡されなかった場合は、比較方法がわかっている場合はfalseを返します。
この場合、instanceofは完全に正当である可能性があります(オブジェクトは自分自身について知っています)が、それでも私はそれを回避するための可能な方法を探しています。何か案は?
擬似コードの例:
XとYがZより大きい場合、trueを返します。
編集:
1)instanceofは、今のところ、matchCompareCriteriaメソッドで必要に応じて表示されるものです。私はそれを取り除きたいです
2)matchCompareCriteraは、compareCriteriaが別のCriteriaに含まれているかどうかを確認します。一方の可能なすべての値がもう一方に含まれている場合、trueを返します。compareCriteriaの多くの組み合わせでは、それらを比較しても意味がないため、falseが返されます(betweenAlfaとbetweenNumは互換性がありません)。
object - OCaml: オブジェクトの型チェック
オブジェクトがある場合、そのタイプをどのように判断できますか? instanceof
(Javaの演算子に相当するOCamlはありますか?)
javascript - JavascriptでのisInstanceの実装
2つの関数が相互に継承する方法を次のように定義します。
}
次に、JavaのinstanceOfまたはPHPのinstanceofのように動作するisInstance関数を定義する必要があります。本質的に、isInstanceを使用して、変数が親関数から継承する関数のインスタンス化されたオブジェクトであるかどうかを判断できます。
これは私が書いたものです:
}
これは、2つの関数を比較する場合は正常に機能しますが、インスタンス化された変数を比較する場合は機能しません。
上記の最後のケースは、私が働きたいものです。関数だけでなく、インスタンスにisInstanceを追加するにはどうすればよいですか?そして、そこにあるすべてのjavascriptの達人にとって、私のコード(おそらくinheritメソッド)に何か改善はありますか?
ありがとう。