問題タブ [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 コードがあります。現在、ラムダを使用しています。次に例を示します。
私がやりたいことは、フィルター ロジックを別のメソッドに移動して、再利用可能にし、簡単に単体テストできるようにすることです。そこで、フィルター メソッドに渡されるラムダの代わりにメソッド参照を使用したいと考えました。フィルター ロジックがかなり静的な場合 (つまり、許可されたタグのリストがコンパイル時にわかっている場合) は簡単に実行できますが、フィルター内の動的データでこれを行う方法がわかりません。
私が欲しかったのは、メソッド参照を使用してから2番目の動的パラメーターを渡す方法でした。
それで、私がやりたいことをすることは可能ですか、それともこの状況に間違ってアプローチしている可能性がありますか?
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?
java - メソッド参照の構成
これは、次の質問に関連しています:関数合成を行う方法は?
Function
として宣言された変数にメソッド参照を割り当てることができるandThen
ことに気付きましたcompose
。しかし、明らかに、それらを or で呼び出す前に、最初に宣言された (またはFunction
呼び出し前に型キャストされた) 変数にそれらを割り当てる必要があります。andThen
compose
これがどのように機能するかについて、誤解があるのではないかと思います。
だから私の質問:
andThen
メソッドを呼び出す前に、型キャストまたは変数への割り当てを行う必要があるのはなぜですか?- この方法で実行する必要があるメソッド参照のタイプは正確には何ですか?
以下サンプルコード。
エラーの詳細説明
Eclipse では、エラー メッセージで強調表示されます。
この式の対象の型は関数型インターフェイスでなければなりません
Java 8コンパイラでは、エラーは次のとおりです。
(実際、Eclipse のエラーが Java 8 コンパイラーのエラーと異なるのはなぜですか?)
java - インスタンス メソッドのリファレンス。に適した方法が見つかりません
Java 8の新機能を紹介します。
私は次のクラスを持っています:
および次の呼び出し:
その後、次のエラーが表示されます。
何が間違っているのか説明してください。
java - Java 8 のラムダ式では、その内部で使用される変数が "final" 修飾子を使用する必要があるのに、メソッド参照を使用する場合は必要ないのはなぜですか?
次のクラスを検討してください。
ではコンパイル エラーが発生するのにobj -> f.handle(obj)
、では発生しないのはなぜf::handle
ですか?
java - ローカル変数で呼び出される Java 8 メソッド参照
私は Java 8 を学習している途中で、少し奇妙なことに出くわしました。
次のスニペットを検討してください。
基本的に、relationships
使用している DAO の API に準拠するために、呼び出された入力セットを別の型にマップする必要があります。RelationshipTransformerImpl
変換には、ローカル変数としてインスタンス化する既存のクラスを使用したいと思います。
さて、ここに私の質問があります:
上記のコードを次のように変更するとします。
transformer
ローカル変数が「事実上最終」ではないため、明らかにコンパイルエラーが発生します。ただし、ラムダをメソッド参照に置き換えると、次のようになります。
その後、コンパイルエラーが発生しなくなりました!なぜこれが起こるのですか?ラムダ式を記述する 2 つの方法は同等であるはずだと思いましたが、明らかにそれ以上のことが起こっています。
java - Java 8 でのメソッド参照による toString の呼び出し
私は何が欠けていますか?Object::toString
ではなく以下を使用する必要があるのはなぜInteger::toString
ですか? ジェネリックによる型消去と関係がありますか?