【发布时间】:2017-07-04 17:44:05
【问题描述】:
public interface Example<E>
{
E get(int index);
default E get()
{
return get(0);
}
}
这将是界面的初始设计。像这样的默认方法(基本上是默认参数)的使用是可以接受的,还是应该只在将来用于添加功能?
【问题讨论】:
-
我从 Oracle 那里听到的官方说法是,它主要用于未来添加的功能。但是 Java 8 中的新接口包含默认方法,所以看起来他们没有接受自己的建议。 :)
-
这对我来说很好;在代码审查中我不会有这个问题。唯一的评论是命名 - 也许
getFirst?如果东西是空的,还需要记录它会throw一些东西——这让我想到了我的最后一点;这无法编译 - 缺少interface声明中的名称。 -
你可以在明天添加默认方法,当它是未来时:)
-
@ZhongYu 但到那时就会是今天。 两难境地!
-
默认方法应该记录其行为,通常只是重复默认方法主体。但这种行为不一定是方法的约定。
标签: java interface default-method