Tag: traits

Java 8默认方法作为特征:安全吗?

在Java 8中使用默认方法作为穷人的特征版本是否安全? 有人说,如果你为了这个目的而使用它们,可能会让pandas伤心 ,因为它很酷,但那不是我的意图。 也常常提醒我们,引入默认方法来支持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特性有关; 这不是重点。 我也不只是要求意见。 相反,我正在寻找一个权威的答案或至less是现场的见解:如果你已经使用默认方法作为企业项目的特征,那么它是否会变成一个时间炸弹?