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

java - プログラムのメイン メソッドからスーパークラス メソッドを呼び出そうとするとエラーが発生する

私はJavaが初めてで、継承の概念を学ぼうとしています。を使用してメインクラスの identifyMyself method() から EggLayer の identifyMyself() メソッドを呼び出そうとしたとき

期待どおりに動作します。ただし、同じステートメントを使用して、メイン クラスの main method() から EggLayer の identifyMyself() メソッドを呼び出そうとすると、コンパイラは「囲んでいるクラスではありません: EggLayer」というエラーを生成します。

誰かが私になぜこれが当てはまるのか説明してもらえますか?

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

java - 異なる Java バージョンでのデフォルト メソッドの奇妙な動作

次のクラス階層があるとします。

ご覧のとおり、MutableSetクラスのみが$plusメソッドの実装を提供します。テスト ケースでは、 type のインスタンスでこのメソッドを呼び出していますArraySet。CI 環境では常にテストに合格しますがAbstractMethodError、ローカル環境では常に失敗します。どちらの場合も、Gradle (2.7) を使用しています。


エラー:


テストコード:


java -version出力:

  • CI (動作する場所):

    /li>
  • ローカル (失敗した場所):

    /li>

javacこれは、コンパイラが必要なすべてのブリッジ メソッドを追加できない (コードは警告やエラーなしでコンパイルされる) 何らかのバグであると予想しています。IntelliJ IDEA では、javacEclipse コンパイラを使用する場合と使用する場合の両方で問題が発生します。

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

java - JSP EL でインターフェイスのデフォルト メソッドを使用する場合の「タイプでプロパティが見つかりません」

次のインターフェースを検討してください。

そして、デフォルトの実装を再利用するだけの実装クラス:

のインスタンスがCJSP EL スクリプト コンテキストで使用される場合は常に、次のようになります。

-- 私は以下を受け取りますPropertyNotFoundException:

私の最初の考えは、Tomcat 6.0 は Java 1.8 の機能には古すぎるものでしたが、Tomcat 8.0 も影響を受けていることに驚きました。もちろん、デフォルトの実装を明示的に呼び出すことで問題を回避できます。

-- しかし、いったいなぜデフォルトのメソッドが Tomcat にとって問題になるのでしょうか?

更新: さらにテストを行うと、デフォルトのプロパティが見つからないことが明らかになりましたが、デフォルトのメソッドは見つかりました。別の回避策 (Tomcat 7 以降) は次のとおりです。

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

java - Java: 同じインターフェースの別のデフォルト メソッドでデフォルト メソッドを呼び出す

私はJava 8の機能に非常に慣れていないため、デフォルトのメソッドを理解しようとしています. 匿名クラスを使用するよりも、同じインターフェイスの別のデフォルト メソッドによってデフォルト メソッドを呼び出す簡単な方法はありますか? 例えば:

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

java - 階層エンティティのインターフェースの設計

階層エンティティのインターフェイスを設計する必要があります。

前者がすべての祖先を返すような方法で、デフォルト getAncestors()のメソッドを実装するのは非常に簡単です。getParent()Stream

実装例:

しかしthis、ストリームにも含める必要があり、ここで問題が発生します。this次の行は、 タイプHierarchicalEntityが ではなくであるため、正しくありませんT

getAncestors()結果に含めるためにインターフェイスを再設計するにはどうすればよいthisですか?