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

0 投票する
17 に答える
449118 参照

java - パラメータとしての Java Pass メソッド

メソッドを参照渡しする方法を探しています。Java がメソッドをパラメーターとして渡さないことは理解していますが、代替手段を取得したいと考えています。

インターフェースはメソッドをパラメーターとして渡す代わりになると言われましたが、インターフェースが参照によってメソッドとして機能する方法がわかりません。私が正しく理解していれば、インターフェイスは単に定義されていないメソッドの抽象的なセットです。いくつかの異なるメソッドが同じパラメーターで同じメソッドを呼び出す可能性があるため、毎回定義する必要があるインターフェイスを送信したくありません。

私が達成したいのは、これに似たものです:

次のように呼び出されます。

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

java - Java 8のインスタンスメソッド参照型の違いは何ですか?

そのため、Java 8 ではメソッド参照が導入され、ドキュメントでは 4 つの型について説明されています

私の質問は、2 つのインスタンス タイプの違いは何ですか?

  1. 特定のオブジェクトのインスタンス メソッドへの参照。
  2. 特定の型の任意のオブジェクトのインスタンス メソッドへの参照。

どちらも参照を参照していますが、何が大きく違うのでしょうか? それらを解決するために使用される型推論が異なるということですか? (彼らの例では)一方がクロージャーで、もう一方がラムダであることは重要ですか?メソッドの引数の数と関係がありますか?

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

java - Comparator.comparing が String::toLowerCase メソッド参照で機能しないのはなぜですか?

文字列の配列を変更せずに逆の順序で (大文字と小文字を区別せずに) 並べ替えようとしています。だから私はJava8ストリームを使用しています。しかし、私はそれを行うことができません。

これが私の試みです:

ここでの問題はString::toLowerCase、静的メソッドでは受け入れられないことですComparator.comparing

その間、私は配列をソートすることができましたが、それを変更しました:

では、最も簡単な回避策は何ですか?

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

java - アリティが異なるオーバーロードされたメソッドのメソッド参照が無効です

式をコンパイルしようとするとComparator.comparing(String::toLowerCase)、Java コンパイラがエラーを返します。詳細については、次の質問を参照してください。

Comparator.comparing が String::toLowerCase メソッド参照で機能しないのはなぜですか?


できるだけ問題を減らすように努めました。特に、他のクラスへのほとんどすべての依存関係を削除しました。メインメソッドには、2 つのメソッド呼び出しが含まれています。最初のステートメントはエラーなしでコンパイルされますが、2 番目のステートメントはエラーになります。

パラメータの数が一致しないため、2 番目のbazメソッドはこのコンテキストでは適用できないため、これは奇妙です。JLS8 (15.13) を見てきました。ただし、メソッド参照のルールは非常に複雑であるため、これは役に立ちませんでした。

Q: 2 番目のケースでコンパイル エラーが発生するのはなぜですか? JLSによると、本当にコンパイルエラーが発生するはずですか? 他の質問に関するいくつかのコメントによると、Netbeans にはコンパイル エラーはありません。


参考までに、JDK8 バージョン 1.8.0-b132 を使用しています。コマンド ラインでプログラムをコンパイルすると、コンパイラは次のエラー メッセージを表示します。

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

java - 例外をスローするためのメソッド リファレンスはありますか?

次のコードがあるとします。

より簡潔に記述する方法、現在利用できる方法、または将来の Java リリースで利用できる方法はありますか? 私は次のようなものを期待しています:

追加情報として、例外的な状況が発生する可能性があるメソッドにこのコードを使用するつもりですが、常にRuntimeExceptionスローされる必要はありません。例外的な状況が発生した時点で、発信者がやりたいことを自由に行えるようにしたいと考えています。

私には思えますが、これはJava 8では不可能です。これについては議論されていますか?これが不可能な理由はありますか?

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

java - 動作を把握できません: ラムダによるメソッド参照

以下のコードを検討してください。

run()メソッドRunnableによって返されているインスタンスのtestStaticメソッドが呼び出されるはずでした。コンソールの出力は「実行」である必要があります。

しかし、このコードはrun()インスタンスのメソッドを呼び出しておらずr、コンソールに何も出力されていません。

どなたか理由を教えてください。

メソッド参照 "::" を適切に使用していない場合はコメントしてください。