問題タブ [default-method]

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 投票する
2 に答える
1372 参照

cdi - Java 8 default interface methods not recognized as managed bean properties in EL

独自の JSF タグ ライブラリをセットアップしようとしています。そこで、このコンポーネントのバッキング Bean を構築するための青写真として、バッキング インターフェースを持つ複合コンポーネントを作成しました。

したがって、ログインサイトのパスワード、ユーザー名、および検証メソッドがあります。さらに、入力テキストの透かしとボタンにいくつかのデフォルトの名前を付けたいと考えています。実装者がそれを変更したい場合は、変更できます。

独自の JSF タグを使用して、実際のアプリケーションの Backing Bean 内にこのインターフェースを実装しました。

私はそれがこのように機能すると思いました。しかし、エラーが表示されます:「原因: javax.el.PropertyNotFoundException: クラス 'Login' にはプロパティ 'usernameWatermark' がありません。」

インターフェイスのデフォルトの実装は、実装する Bean に継承されていないようです。コンポーネントのデフォルトの実装を提供するために、なぜ、そして何をすればよいのでしょうか?

編集:インターフェースのデフォルトメソッドconecptの誤解を避けるために、次のことを試しました。私は自分のインターフェースを取り、通常の Java プロジェクトでクラスを実装し、Login クラスを介して getLoginButtonValue にアクセスしようとしました。

非常にうまく機能します。正しい文字列が出力されました。それらにアクセスするためにデフォルトのメソッドを実装する必要はありません。では、どこに問題があるのでしょうか。たぶん、cdi、bean-resolver、またはこのJava 8の概念を認識していない何かがあるのでしょうか?

0 投票する
8 に答える
5363 参照

java - 動的プロキシからデフォルト メソッドを明示的に呼び出す方法は?

Java 8 インターフェイスにはデフォルトのメソッドがある可能性があるためです。実装メソッドからメソッドを明示的に呼び出す方法を知っています。つまり、Java でデフォルト メソッドを明示的に呼び出す方法を参照してください。

しかし、たとえばプロキシでリフレクションを使用してデフォルト メソッドを明示的に呼び出すにはどうすればよいでしょうか。

例:


編集: How do I invoke Java 8 default methods refletivelyで同様の質問がされていることは知っていますが、これは2つの理由で私の問題を解決していません:

  • その質問で説明されている問題は、一般的にリフレクションを介して呼び出す方法を目的としているため、デフォルトのメソッドとオーバーライドされたメソッドの区別はありませんでした。これは簡単で、インスタンスのみが必要です。
  • 答えの1つ-メソッドハンドルを使用-は、アクセス修飾子をルックアップクラスのフィールドに変更するなどの厄介なハック(imho)でのみ機能します。これは、次のような「ソリューション」の同じカテゴリです: Javaリフレクションを使用してプライベート静的最終フィールドを変更します:それが可能であることを知っているのは良いことですが、私はそれを本番環境では使用しません.それを行うための「公式」の方法を探しています.

IllegalAccessExceptionが投げ込まれるunreflectSpecial

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

java - Java 8 でコンストラクターをデフォルトにしないのはなぜですか?

この質問を読みました。答えは、Java 8 (インターフェースでデフォルトのメソッドを持つことができる場所) でさえ、デフォルトのコンストラクターを持つことができないと言っています。そして、それは意味がないと言っています。

なぜそれが意味をなさないのか、またはJava 8でデフォルトコンストラクターがサポートされていない理由を誰かが説明できますか?

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

maven - maven-plugin-plugin:descriptor ゴールがファイルのおよびで失敗する

Maven プラグインの開発中に、ビルドで次のエラーが出力されます。

ファイルIface.javaがコンパイル可能であっても。

Iface.java:

からpom.xml

問題の原因は何ですか?どのように修正できますか?