JavaのLambdas実行中に匿名クラスを作成しますか? -- java フィールド と lambda フィールド と functional-programming フィールド と anonymous-class フィールド と functional-interface フィールド 関連 問題

Do lambdas in Java create anonymous class during execution/runtime?












1
vote

問題

日本語

Java SE8仕様書に記載されています。「ラムダ式の評価は機能インタフェースのインスタンスを生成します。

これまでのところ、私の理解は - lembda式は機能インタフェースを実装するいくつかの匿名クラスを作成します

誰かが詳細を説明することができます、私たちが書くLamda式を持つランタイムで何が起こるのか?

英語

In Java SE8 specification it is written: "Evaluation of a lambda expression produces an instance of a functional interface".

So far, my understanding is - lambda expression creates some anonymous class that implements a functional interface

Can someone explain in details, what happens in runtime with the lamda expressions that we write?

</div
              
     
     

回答リスト

1
 
vote

いいえ、彼らはそうではありません。

ランタイムが母乳をどのようにしているかについての expletion メカニズム。

あなたが知っているのは、必要なインターフェース/動作を実装する有効なオブジェクトを取得することだけです。しかしそれを超えてはほとんど指定されています。 2つの呼び出しが同じオブジェクトを生成するかどうかにかかわらず、そのスペックはあなたに言うわけではありません。

この曖昧な仕様は、コンパイラおよび/またはランタイムが仕様の乱ムを実行せずに最適化を行うことができるように行われる。

匿名クラスとの関係はより歴史的なものです:ラムダを使わずにラムダが何をしたいのなら、匿名クラスはあなたの次のツールです。

 

No, they don't.

The exact mechanism on how the runtime represents lambdas is intentionally left under-specified.

All you know is that you'll get a valid object that implements the necessary interfaces/behaviours. But beyond that very little is specified. The spec doesn't even tell you if two calls to that will produce the same object or not.

This vague specification is done so that the compiler and/or the runtime can make optimizations without running afoul of the spec.

The relation with anonymous classes is more a historical one: if you wanted to do what lambdas do without using lambdas, then anonymous classes are your next-best tool.

</div
 
 
         
         

関連する質問

1  「この式のターゲットタイプは機能インタフェースでなければならない」  ( The target type of this expression must be a functional interface even though ) 
大丈夫だから私はここにかわいい愚かな気分です。私は今日の私のEclipseでこの問題に遭遇しました、そして世界のために私は問題が何であるかを理解することができません。 とても簡単です。次のコンパイル: <事前> <コード> 2 次のものはありません: <事...

8  コードコンパイルEclipseではなく、Javacではありません。機能サブインターフェイスを備えたCurilied Lambdas。どちらが正しい?  ( Code compiles in eclipse but not javac curried lambdas with functional subinter ) 
私はEclipseでいくつかのコードを開発し、それを正常にテストし、それを私たちのJenkins CI Serverにプッシュし、MavenがJavaコンパイルエラーで撮影された電子メールを手に入れました。その後、問題を隔離し、問題を表示する次の最小の例を作成...

6  パッケージjava.util.functionのパラメータと戻り型の機能インタフェースの概要  ( A summary of the parameters and return type of functional interfaces in the pack ) 
java.util.function のすべてのインターフェイスのパラメータと戻り型の文字列タイプを探しています。 ...

2  機能的なインターフェースを持つラムダ[重複]  ( Lambda with non functional interfaces ) 
この質問はすでにここで回答を持っています Java 8の機能インタフェースには抽象的なメソッドが1つありますか? (3回答) ...

1  Java 8のメソッド参照?  ( Method reference in java 8 ) 
メソッド参照を使用している間に、引数は、参照している機能インタフェースのメソッドとメソッドに照合する必要があります。 だから私は次のエラーを受けています。 <事前> <コード> public class MethodRefTest { public ...

0  指定された機能インターフェイスと一致することを示すためのメソッドアノテーションがありますか?  ( Is there a method annotation to indicate that it matches a specified functional ) 
いくつかの指定された機能インタフェースと一致するようにメソッドに注釈を付ける方法、およびメソッド参照を必要とするパラメータを指定する方法を指定する方法は、その注釈付きの方法を受け入れる方法です。 モチベーション:メソッドが誤った引数で呼び出されたときに、メソッ...

2  JUnit 5のMethodsourceとしてJava機能インターフェースの実装(サプライヤなど)を使用することは可能ですか?  ( Is it possible to use java functional interface implementation such as the supp ) 
統合テストを実行すると、引数が異なるファイルの内側にJSonsとして保存されています。これらのファイルは様々なテストケースを記憶しており、その後、異なる方法でテストされます。 このような一般的な読み取りファイルメソッドを作成することができるようにするのは <...

19  機能インタフェースの継承クイーク  ( Functional interface inheritance quirk ) 
私は私がこのようなものに見える時間に使用していたカスタムインターフェースを持っています: <事前> <コード> public interface Function<T, R> { R call(T input); } このインタフェースをJava'...

2  これらのライブラリ関数へのインタフェースを提供するための最良の方法は何ですか?  ( Whats the best way to provide interface to these library functions ) 
ライブラリパッケージを構築しています。これは、30歳以上のクラスによって実装されるインタフェース<コード> PropTransformer を構築しています。私はここでそのようなクラスを1つ撮っています ShapeTransformer <事前> <コード...

31  サプライヤ<T>を例外をスローする必要があることを宣言することは可能ですか?  ( Is it possible to declare that a suppliert needs to throw an exception ) 
だから私は次のコードをリファクタリングしようとしています: <事前> <コード> /** * Returns the duration from the config file. * * @return The duration. */ priva...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有