特性としてのJava 8のデフォルトメソッド:安全?
デフォルトのメソッドを Java 8の貧困層の特性のトレイトとして使用することは安全な方法ですか? パンダをそれだけで使うと悲しいかもしれないと主張する人もいます。クールだからですが、それは私の意図ではありません。また、APIの進化と下位互換性をサポートするためにデフォルトのメソッドが導入されたこともよく思い出されますが、これは、それ自体を特性として使用することを間違ったり、歪ませたりするものではありません。 私が持っている以下の実用的なユースケースを念頭に置きました: public interface Loggable { default Logger logger() { return LoggerFactory.getLogger(this.getClass()); } } または、次のように定義しますPeriodTrait。 public interface PeriodeTrait { Date getStartDate(); Date getEndDate(); default isValid(Date atDate) { ... } } 確かに、コンポジションを使用することもできます(ヘルパークラスを使用することもできます)が、より冗長で雑然としており、ポリモーフィズムの恩恵を受けることができません。 では、デフォルトのメソッドを基本的な特性として使用しても問題ありませんか?それとも、予期しない副作用について心配する必要がありますか? SOに関するいくつかの質問は、JavaとScalaの特性に関連しています。それはここでのポイントではありません。私も単に意見を求めるのではありません。代わりに、私は信頼できる回答または少なくともフィールドインサイトを探しています。企業プロジェクトの特性としてデフォルトの方法を使用した場合、それは時限爆弾であることが判明しましたか?