問題タブ [method-dispatch]
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 - Double Dispatch/Visitor パターンを使用せずに Java の静的メソッドのディスパッチを回避する
Foo
これらのメソッドを提供するクラスを使用しています:
Java はレシーバー以外の引数で静的にディスパッチするため、 my value
(これは ですが、Object
動的な type を持つ可能性がありますGoo
) を渡すだけではなく、JVM に依存して「正しい」メソッドを動的に選択することはできません。
これは私の現在の(醜い)回避策です:
(オーバーロードされたメソッドを含むクラス)のコードを変更せずにFoo
これを行うより良い方法はありますか?
java - null 引数を指定した Java メソッドのディスパッチ
null
引数として直接渡すか、値Object
を割り当てたを渡すかによって、(明らかに)違いが生じるのはなぜですか? null
つまり、(コメントアウトされた) への 2 番目の呼び出しが にfoo(...)
ディスパッチされないのはなぜfoo(Object)
ですか?
更新: Java 1.6 を使用しています。Hemal のコードは問題なくコンパイルできましたが、私のコードはまだコンパイルできません。私が見る唯一の違いは、Hemal のメソッドは静的であるのに対し、私のメソッドはそうではないということです。しかし、なぜこれが違いを生む必要があるのか 本当にわかりません...?
更新 2:解決済み。クラスに別のメソッド foo(Runnable) があったため、ディスパッチャは最も具体的なメソッドを 1 つだけ選択することができませんでした。(Hemal の 2 番目の回答の私のコメントを参照してください。) ご協力いただきありがとうございます。
java - Java 動的バインディング
試験の練習をしていて、完全に道に迷ってしまうサンプル問題を見つけました。次のコードについて、出力が何であるかを見つけます。
私は自分のアイデアを念頭に置いていましたが、Java を実行すると、まったく異なる結果が得られました。
最初のいくつかはOKですが、その後は本当に理解できません。誰でもこの問題について良い説明がありますか?
ありがとう
ruby - Ruby: オブジェクト参照を介して関数を呼び出すにはどうすればよいですか?
この不自然な例を考えてみましょう:
eating_method
ここで、いくつかの引数を指定して のターゲットを呼び出したいと思います:
Rubyでこれを行う正しい方法は何ですか?
apache-flex - データグリッドの Itemclick イベント
この問題は、データグリッド内のアイテムをクリックすると、テキスト領域にアイテムの値が表示されますが、ここではコンポーネントが分離されているため、イベントをディスパッチする必要があると要約できます。
/////////////////////////////////////////////// /////////////
これは私のメイン MXML アプリケーション ファイルです。
objective-c - -performSelector: の使用 vs. メソッドの呼び出しのみ
私はまだObjective-Cに慣れていないので、次の2つのステートメントの違いは何ですか?
java - オーバーロードはコンパイル時のポリモーフィズムです。本当に?
オーバーライドとオーバーロードの構文上の違いは知っています。また、オーバーライドは実行時のポリモーフィズムであり、オーバーロードはコンパイル時のポリモーフィズムであることも知っています。しかし、私の質問は次のとおりです。「オーバーロードは本当にコンパイル時のポリモーフィズムですか?メソッド呼び出しは本当にコンパイル時に解決しますか?」. 私の主張を明確にするために、クラスの例を考えてみましょう。
すべてのメソッドgreetMe(), greetMe(String name), wishLuck()
が公開されているため、すべてオーバーライドできます (オーバーロードされたものを含む)。例えば、
ここで、次のスニペットを検討してください。
このgetRandomGreeter()
メソッドはランダムGreeter
オブジェクトを返します。のオブジェクト、または のようなそのサブクラスのいずれかを返すことができGreeter
ます。クラスファイルを使用するか動的にロードしてオブジェクトを作成し、リフレクション(リフレクションで可能だと思います)またはその他の可能な方法を使用してオブジェクトを作成します。これらのメソッドはすべて、サブクラスでオーバーライドされる場合とされない場合があります。そのため、コンパイラは特定のメソッド (オーバーロードされているかどうか) がオーバーライドされているかどうかを知る方法がありません。右?また、ウィキペディアは仮想機能について次のように述べています。FancyGreeter
GraphicalGreeter
getRandomGreeter()
new
Greeter
Java では、すべての非静的メソッドはデフォルトで「仮想関数」です。オーバーライドできないキーワード final でマークされたメソッドと、継承されないプライベート メソッドのみが非仮想です。
仮想関数は動的メソッド ディスパッチを使用して実行時に解決され、すべての非プライベート、非最終メソッドは (オーバーロードされているかどうかにかかわらず) 仮想であるため、実行時に解決する必要があります。右?
では、コンパイル時にオーバーロードを解決するにはどうすればよいでしょうか? または、私が誤解していること、または見逃していることはありますか?
python - When should I use @classmethod and when def method(self)?
While integrating a Django app I have not used before, I found two different ways to define functions inside the class. The author seems to use them both distinctively and intentionally. The first one is the one that I myself use a lot:
The other one is the one I never use, mostly because I do not understand when and what to use it for:
The classmethod
decorator in the python documentation says:
A class method receives the class as the implicit first argument, just like an instance method receives the instance.
So I guess cls
refers to Dummy
itself (the class
, not the instance). I do not exactly understand why this exists, because I could always do this:
Is this just for the sake of clarity, or did I miss the most important part: spooky and fascinating things that couldn't be done without it?
wcf - WCF が RESTful 要求をディスパッチするメソッドを見つける
次のコントラクトを使用してWCF RESTサービスを実装するとします。
現在、承認を行うためにパイプラインに HttpModule がありますが、そのコードはリクエストがどのメソッドにディスパッチされるかを知る必要があります。WCF によって呼び出されるメソッドのシグネチャを見つけるにはどうすればよいですか?