問題タブ [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 投票する
3 に答える
248 参照

java - 動的な値を持つラムダ フィルターをメソッド参照に変換する方法

いくつかの入力に基づいてリストをフィルタリングする Java コードがあります。現在、ラムダを使用しています。次に例を示します。

私がやりたいことは、フィルター ロジックを別のメソッドに移動して、再利用可能にし、簡単に単体テストできるようにすることです。そこで、フィルター メソッドに渡されるラムダの代わりにメソッド参照を使用したいと考えました。フィルター ロジックがかなり静的な場合 (つまり、許可されたタグのリストがコンパイル時にわかっている場合) は簡単に実行できますが、フィルター内の動的データでこれを行う方法がわかりません。

私が欲しかったのは、メソッド参照を使用してから2番目の動的パラメーターを渡す方法でした。

それで、私がやりたいことをすることは可能ですか、それともこの状況に間違ってアプローチしている可能性がありますか?

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

kotlin - How to resolve overload ambiguity in method references?

Say I want to assign the java method Log.d(String, String) to a variable x of method type (String, String) -> Int and I do it like this:

The compiler says:

Obviously there is a second method Log.d(String, String, Throwable) but how do I tell the compiler which one I want?

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

java - メソッド参照の構成

これは、次の質問に関連しています:関数合成を行う方法は?

Functionとして宣言された変数にメソッド参照を割り当てることができるandThenことに気付きましたcompose。しかし、明らかに、それらを or で呼び出す前に、最初に宣言された (またはFunction呼び出し前に型キャストされた) 変数にそれらを割り当てる必要があります。andThencompose

これがどのように機能するかについて、誤解があるのではないかと思います。

だから私の質問:

  1. andThenメソッドを呼び出す前に、型キャストまたは変数への割り当てを行う必要があるのはなぜですか?
  2. この方法で実行する必要があるメソッド参照のタイプは正確には何ですか?

以下サンプルコード。


エラーの詳細説明

Eclipse では、エラー メッセージで強調表示されます。

この式の対象の型は関数型インターフェイスでなければなりません

機能インターフェースに関するEclipseエラー

Java 8コンパイラでは、エラーは次のとおりです。

(実際、Eclipse のエラーが Java 8 コンパイラーのエラーと異なるのはなぜですか?)

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

java - インスタンス メソッドのリファレンス。に適した方法が見つかりません

Java 8の新機能を紹介します。

私は次のクラスを持っています:

および次の呼び出し:

その後、次のエラーが表示されます。

何が間違っているのか説明してください。

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

java - Java 8 のラムダ式では、その内部で使用される変数が "final" 修飾子を使用する必要があるのに、メソッド参照を使用する場合は必要ないのはなぜですか?

次のクラスを検討してください。

ではコンパイル エラーが発生するのにobj -> f.handle(obj)、では発生しないのはなぜf::handleですか?

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

java - ローカル変数で呼び出される Java 8 メソッド参照

私は Java 8 を学習している途中で、少し奇妙なことに出くわしました。

次のスニペットを検討してください。

基本的に、relationships使用している DAO の API に準拠するために、呼び出された入力セットを別の型にマップする必要があります。RelationshipTransformerImpl変換には、ローカル変数としてインスタンス化する既存のクラスを使用したいと思います。

さて、ここに私の質問があります:

上記のコードを次のように変更するとします。

transformerローカル変数が「事実上最終」ではないため、明らかにコンパイルエラーが発生します。ただし、ラムダをメソッド参照に置き換えると、次のようになります。

その後、コンパイルエラーが発生しなくなりました!なぜこれが起こるのですか?ラムダ式を記述する 2 つの方法は同等であるはずだと思いましたが、明らかにそれ以上のことが起こっています。

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

java - Java 8 でのメソッド参照による toString の呼び出し

私は何が欠けていますか?Object::toStringではなく以下を使用する必要があるのはなぜInteger::toStringですか? ジェネリックによる型消去と関係がありますか?