問題タブ [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.
java - プログラムのメイン メソッドからスーパークラス メソッドを呼び出そうとするとエラーが発生する
私はJavaが初めてで、継承の概念を学ぼうとしています。を使用してメインクラスの identifyMyself method() から EggLayer の identifyMyself() メソッドを呼び出そうとしたとき
期待どおりに動作します。ただし、同じステートメントを使用して、メイン クラスの main method() から EggLayer の identifyMyself() メソッドを呼び出そうとすると、コンパイラは「囲んでいるクラスではありません: EggLayer」というエラーを生成します。
誰かが私になぜこれが当てはまるのか説明してもらえますか?
java - 異なる Java バージョンでのデフォルト メソッドの奇妙な動作
次のクラス階層があるとします。
ご覧のとおり、MutableSet
クラスのみが$plus
メソッドの実装を提供します。テスト ケースでは、 type のインスタンスでこのメソッドを呼び出していますArraySet
。CI 環境では常にテストに合格しますがAbstractMethodError
、ローカル環境では常に失敗します。どちらの場合も、Gradle (2.7) を使用しています。
エラー:
テストコード:
java -version
出力:
CI (動作する場所):
/li>ローカル (失敗した場所):
/li>
javac
これは、コンパイラが必要なすべてのブリッジ メソッドを追加できない (コードは警告やエラーなしでコンパイルされる) 何らかのバグであると予想しています。IntelliJ IDEA では、javac
Eclipse コンパイラを使用する場合と使用する場合の両方で問題が発生します。
java - JSP EL でインターフェイスのデフォルト メソッドを使用する場合の「タイプでプロパティが見つかりません」
次のインターフェースを検討してください。
そして、デフォルトの実装を再利用するだけの実装クラス:
のインスタンスがC
JSP EL スクリプト コンテキストで使用される場合は常に、次のようになります。
-- 私は以下を受け取りますPropertyNotFoundException
:
私の最初の考えは、Tomcat 6.0 は Java 1.8 の機能には古すぎるものでしたが、Tomcat 8.0 も影響を受けていることに驚きました。もちろん、デフォルトの実装を明示的に呼び出すことで問題を回避できます。
-- しかし、いったいなぜデフォルトのメソッドが Tomcat にとって問題になるのでしょうか?
更新: さらにテストを行うと、デフォルトのプロパティが見つからないことが明らかになりましたが、デフォルトのメソッドは見つかりました。別の回避策 (Tomcat 7 以降) は次のとおりです。
java - Java: 同じインターフェースの別のデフォルト メソッドでデフォルト メソッドを呼び出す
私はJava 8の機能に非常に慣れていないため、デフォルトのメソッドを理解しようとしています. 匿名クラスを使用するよりも、同じインターフェイスの別のデフォルト メソッドによってデフォルト メソッドを呼び出す簡単な方法はありますか? 例えば:
java - 階層エンティティのインターフェースの設計
階層エンティティのインターフェイスを設計する必要があります。
前者がすべての祖先を返すような方法で、デフォルト getAncestors()
のメソッドを実装するのは非常に簡単です。getParent()
Stream
実装例:
しかしthis
、ストリームにも含める必要があり、ここで問題が発生します。this
次の行は、 タイプHierarchicalEntity
が ではなくであるため、正しくありませんT
。
getAncestors()
結果に含めるためにインターフェイスを再設計するにはどうすればよいthis
ですか?