問題タブ [method-invocation]

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 投票する
3 に答える
8129 参照

java - void メソッドが返されたかどうかを確認できますか?

void メソッドを呼び出すことで「キャンセル」されたかどうかを確認できるかどうかを尋ねたいだけですreturn;

たとえば、私のメインcalculate(myArray);では、次のように定義されているを呼び出します。

それが戻ってきたかどうかを知る方法はありますか?私の考えは、戻る直前に真に変更される「グローバル」ブール値を作成し、メインでその値を確認するか、戻り値の型を int のようなものに変更し、それが返されたときに最初return -1;と最後に使用することでした方法return 0;

どちらも可能ですが、どちらもあまり良いスタイルではないと思います。代替手段はありますか?

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

multithreading - 任意のデータをオブジェクト インスタンスに格納する

次の例を検討してください。

フックされた仮想メソッドがスレッドで実行されるようにします。つまり、その実行を遅延/延期します。

この目的のために、TVirtualMethodInterceptor を使用して、特定のクラスの仮想メソッドをインターセプトします。仮想メソッドが呼び出されると、vmi.OnBefore が起動されます。これは私の考えを簡略化したものです:

Call_VirtualMethod(method1) -> OnBefore_fires_1 -> CreateThread_and_InvokeAgain -> OnBefore_fires_2 -> DoInvoke := true (つまり、メソッドを直接実行する)

説明:

  1. 初期の SomeFlag の値は PostponeExecution です。

  2. ttc.method1 への最初の呼び出しは、OnBefore イベント (OnBefore_fires_1) をトリガーします。SomeFlag が PostponeExecution であるため、メソッドは実行されません。したがって、SomeFlag を DirectExecute に設定し、スレッドのコンテキスト内で同じメソッドを再度呼び出すスレッドが作成されます。

  3. 次に、OnBefore が再び起動します (Instance がプロキシ化されたオブジェクト、つまりメソッドがフックされたメソッドであるため)。今回は SomeFlag が DirectExecute で、メソッドが呼び出されます。

メソッドを呼び出すときにプロキシ化されたオブジェクト (Instance var) を使用します。このように、method1 が同じクラスの他の仮想メソッドを呼び出すと、後者もスレッドで自動的に実行されます。

これを行うには、フラグをどこかに保存する必要があります。つまり、OnBefore の 2 回目の呼び出しで何をすべきかを示します。私の質問は、OnBefore の 2 回の呼び出し中にアクセスできるように、「SomeFlag」を格納する方法/場所です。ソリューションはクロスプラットフォームでなければなりません。提案/その他の解決策も大歓迎です。

VMT パッチ ( link1 、 link2 、 link3 ) で実行できると思いますVirtualProtectは Windows のみの機能であるため、クロスプラットフォームの要件に違反します。

どんなアイデアでも大歓迎です。

これはどういうことですか:

Delphi でこの種のクラスを作成できると想像してください。

このアプローチにより、スレッド化と同期が大幅に簡素化されます。TThread.Synchronize()、TThread.Queue() などのダックタイピングはもう必要ありません。ビジネス ロジックに集中し、適切なメソッドを呼び出すだけです。OnBefore イベントが「汚い」仕事をしてくれます。C# の Await メソッドに非常に近い。

これが主なアイデアです!

更新: より明確にするために、質問全体を再編集しました。

0 投票する
0 に答える
150 参照

java - スプリングが同時に 2 つの Bean を作成することは可能ですか?

春がリフレクションを介して Bean のゲッターを呼び出そうとすると、Bean が「現在作成中」であるという違法な状態例外がスローされるという問題に直面しています。インスタンス化されていない限り、Bean のメソッドを呼び出すことができないことを知っておくべきではありませんか? この場合、すべての依存性注入は Spring によって行われます。2 つの Bean が ClassABC を共有し、それらが同時に作成されている場合、この例外がスローされる可能性はありますか?

ログ トレース:

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

java - Why calling this function recursively does not throw a NullPointerException

My question comes from this thread.

Consider this code:

The output above is 8.

What I don't get is that how fibLamdba is initialized? It seems that I totally miss how the method invocation is done because I though that this code would produce a NPE.

Hope my question is clear

0 投票する
0 に答える
609 参照

scala - scala でのメソッド呼び出しインターセプト

こんにちは、クラスに送信されるすべてのメソッド呼び出しを反射的に (または別の方法で) インターセプトする方法があるかどうか疑問に思っていました。Dynamic を使用して未知のメソッドをインターセプトできることは知っていますが、クラスで既に定義されているメソッドはどうですか?

メソッドの構文を変更せずにそれを行う方法を見つけたいと思います(アスペクトフレームワークでメソッドをインターセプトするために行われるため)。

私がやりたいことの例として、これを想像してください:

}

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

javascript - module.exportsで関数を呼び出すときのCommonJSの不正な呼び出しエラー

これを行うとうまくいきます:

ただし、これを別のファイルに移動し、CommonJS/webpack を使用してエクスポートすると、次のようになります。

(そのようです:)

...

それはおそらく非常に明白ですが、私の心の中では、なぜそれがうまくいかないのかわかりません:/

0 投票する
4 に答える
1334 参照

android - Androidスタジオで2つの日付を検証する

私は2つの日付を検証する必要があります。1つはユーザーが選択し、もう1つはカレンダーから取得したものです...これは私がこれまで成功せずに試したことです:

エラーは .before(dfDate.format(date2)) にあり、次のように表示されます: Error:(484, 51) error: method before in class Date cannot be applied to given types; 必須: 見つかった日付: 文字列 理由: 実引数文字列はメソッド呼び出しの変換で日付に変換できません

ご覧のとおり、両方の日付が等しい場合に両方の日付を比較すると、コンパイラはこの行にエラーを表示しません。

また、日付に変更しようとしましたが、成功しません...この問題を解決するのに役立つアイデアはありますか? ありがとう。