問題タブ [method-reference]
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)?
Java 8 の特定のメソッドのメソッド リファレンスは、 として取得できますClass::Method。しかし、クラスのすべてのメソッドのメソッド参照を取得するにはどうすればよいでしょうか?
必要なすべてのメソッドのメソッド名は異なりますが、型シグネチャは同じです。また、メソッドの名前は事前にわかりません。
例:
既知のメソッドへのメソッド参照は、次のop0ように取得できます。
しかし、クラス内のすべてのメソッドのメソッド参照を取得するにはどうすればよいでしょうか?
functional-programming - Java 8でのコンストラクタ参照の用途は何ですか
Java 8 の機能について読んでいて、この記事にたどり着きました。コンストラクター参照の実際の使用法について疑問に思っていましたnew Obj。
PS、グーグルを試しましたが、意味のあるものを見つけることができませんでした。誰かがコード例、リンク、またはtutを持っていれば、それは素晴らしいでしょう
java - コンストラクターへの参照の目的 : Java 8
Java8のメソッド参照のドキュメントを調べていました
メソッド参照の種類に関する表に遭遇しました。4つのうち最後のもの
new という名前を使用して、静的メソッドと同じ方法でコンストラクターを参照できます。
コンストラクタへの参照とは正確には何をするのですか?
注: Java ドキュメンテーションが自明であることは知っていますが、この場合、それが何を伝えたいのかを正確に理解できていません。
java - 同期式内のメソッド参照
申し訳ありませんが、メソッドsynchronized内のブロックsync()が同期されているオブジェクトを理解できません:
メソッド参照オブジェクトの場合、なぜ私は単に書くことができないの
synchronized (TestLambda::new)ですか? (コンパイル時エラーになります)。
何か案は?
UPD:念のため:実際に同期されています
UPD-2 : 疑問に思っている人のために、簡単な例を示します。
java - Java 8 配列コンストラクタ参照はどのように機能しますか?
IntFunction整数配列を返す型の変数があるとします。
Java 8 ジェネリックでは、次のようなコンストラクタ参照でこの変数を初期化できます。
Javaコンパイラはこれをどのようにバイトコードに変換しますか?
のような他の型の場合、特別な意味を持つ単なるメソッドであるString コンストラクターを指す命令をString::new使用できることを私は知っています。invokedynamicjava/lang/String.<init>(...)
配列を構築するための特別な指示があることを見て、これは配列でどのように機能しますか?
java - リフレクション経由でメソッド参照を取得するには?
Function のような関数型インターフェイスと、メソッド参照を取得できるさまざまなクラスのメソッドがあるとします。たとえば、次のようになります。
リフレクションを介してクラス A から Function インターフェイスのインスタンスに変換されたすべての可能なメソッド参照を取得するにはどうすればよいですか?
アップデート:
この質問は、これまでのコメントで言及されたものと重複していませんが、 Holgerのコメントで言及された両方の質問のおかげで、必要なことを行うことができました。
java - Java ラムダ式
現在、JDK 1.8 でラムダ式を学習しています。私が理解していないことがわかったいくつかのコードに出くわしました。
コードは次のとおりです。
comp.compare("5", "3")最終的に実行され"5".compareTo("2")ます。私の理解では、コンパイラは同じ署名を持つ静的メソッドを見つける必要があるということでした
私はそのような方法を作成しましたが、それは機能します。Java コンパイラが を呼び出す理由がわかりません"5".compareTo("2")。それらのメソッド シグネチャは同じではありません。
コンパイラがこの種のコードを生成する理由に関する情報はありますか?
java - パラメータでメソッド参照を使用する
Javaストリームの学習を始めたばかりで、問題に直面しました。次の例を見てください。これは Node クラスの一部です:
私の意図は、ストリーム内の各ノードで名前と結果のパラメーターを使用して #findChildren を呼び出すことでした。メソッド参照 Node::findChildren を使用しようとしましたが、うまくいきませんでした。->演算子を使用する以外のソリューションをいただければ幸いです。
メソッド参照をパラメーターと一緒に使用することは何とか可能ですか? 私はストリームのアイデアが好きで、コードをもっと読みやすくしたいだけです。
実際、私が読んだパラメーターを使用したメソッド参照という同様の質問があると思いますが、コードで bind2 メソッドを使用する方法がわかりません。それが唯一の解決策ですか?
java - Java 8ラムダでFunctionalInterfaceメソッド情報を取得する方法
2 つのラムダ メソッドが等しいかどうかをテストしたい。例えば:
出力:
私の目的は、2 つのラムダ関数が同じメソッドであることを検証することです。
つまり、true を返すテストがあります。
このようにして、FunctionalInterface からメソッド情報を取得できますか?
ありがとう
java - Java 8 のメソッド参照には具象型がありますか? もしそうなら、それは何ですか?
この質問は、別の質問とかなり密接に関連しています。しかし、その質問に対する受け入れられた答えは、決定的なものではないように感じます。
では、 Java 8 のメソッド参照の型は何ですか? メソッド参照を に "キャスト" (リフト?) する方法の簡単なデモを次に示しますjava.util.function.Function。
では、メソッド参照をコンパイル済み/具象型にキャストして渡すことができる、痛みの少ない (より簡単な) 方法はありますか?