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

java - 内部クラスのコンストラクタ参照が実行時に VerifyError で失敗する

lambda を使用して内部クラス コンストラクターのサプライヤーを作成していctx -> new SpectatorSwitcher(ctx)ます。IntelliJ は、代わりに変更することを提案しましSpectatorSwitcher::newた。SpectatorSwitcher は、私が作業しているクラスの非静的内部クラスです。提案されたコードは (maven を使用して) 正常にコンパイルされますが、実行時に次の VerifyError が発生します。

コンパイル中に javac / maven が失敗しないのに、無効なバイトコードを生成するのはなぜですか?

編集:問題は単純な呼び出しよりもはるかに複雑であるように見えます。これは、それを再現するために必要なコードです:

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

kotlin - Kotlin にコンストラクタ参照はありますか?

Java には、Class::newコンストラクタ参照の構文があります。メソッドの呼び出し可能な参照があることは知っていますが、コンストラクターはどうですか? 私にとって典型的なユースケースは工場です。

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

java - Java 8 コンストラクター メソッドのリファレンス

私はJava 8の本を読んでいますが、私が再現したサンプルが付属しています:

実装者:

発信者:

これが呼び出された場合、以下が出力に出力されます。

すべて問題ありませんが、メソッド参照を使用すると、perform messageメソッドが出力されません! これはなぜですか、何か足りないのですか?

このコードを使用する場合:

またはこのコード:

これは印刷されます:

例外メッセージなどは出力されません。Java 8 1.8.25 64 ビットを使用しています。

アップデート

私のように勉強している読者にとって、これは正しい実行コードです。

呼び出し元のクラスを作成しました。

クラスコンストラクターにパラメーターとして渡す必要がある「アクション機能インターフェイスから実行する」空のメソッドを実装する必要があるため、MethodReference「空のコンストラクターである MethodReferenceCall のコンストラクター」を参照し、それを使用できます。

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

java-8 - How do I use [TypeArguments] with a constructor reference in Java 8?

Section 15.13 of the Java Language Specification for Java 8 describes this form of the method reference syntax for creating a constructor reference:

For example:

That all works fine, but it seems that absolutely anything (excluding primitives) can be also supplied for the [TypeArguments] and everything still works:

Here's a silly example to prove the point:

A few questions arising:

[1] Since the String class doesn't even use generics, is it valid that the compiler allows the creation of that test2 constructor reference with those meaningless [TypeArguments]?

[2] What would be a meaningful example of using [TypeArguments] when creating a constructor reference?

[3] Under what conditions is it essential to specify [TypeArguments] when creating a constructor reference?

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

java - Java 8 は、メソッド参照のためにオンザフライでインターフェイスを実装できますか?

Java 8 の新機能について学びます。

私はさまざまな例で遊んでいますが、奇妙な動作を見つけました:

このコードは正常にコンパイルされますが、どのように機能するかわかりません。

Test::newサプライヤーとして受け入れられるのはなぜですか?

サプライヤーのインターフェースは非常にシンプルに見えます:

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

java - デフォルト メソッドでの自動コンストラクタ マッチング

次のようなPersonFactoryインターフェイスがあります。

Personクラス:

次のように s をインスタンス化できるようにしたいPerson:

の署名を照合することにより、Java コンパイラに適切なコンストラクタを自動的に選択させる方法はありますPersonFactory.create()か?

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

generics - 型パラメータをジェネリック クラス コンストラクタ参照に渡す方法は?

次のコードを想定します。

JavaFX プロパティ ( SimpleIntegerPropertySimpleStringProperty、 ... およびSimpleObjectProperty<T>) をジェネリック クラス コンストラクターの() -> Property<T>引数に渡す::SimpleIntegerPropertyことで、これに::SimpleObjectProperty遭遇しました。

ここでコンパイラを改善したり、型パラメータをコンストラクタ/関数参照に渡すことができるようにすることは可能ですか? ここで単純なラムダ式に対してコンストラクター参照を使用することは理にかなっていますか? コンパイル方法は異なりますか?