为什么在Java中的接口中添加了静态和默认方法?

时间:2014-04-23 23:58:01

标签: java

我使用Java但是我有更好的C#背景。我一直在界面中阅读Java的defaultstatic方法。我想我理解接口中的默认方法是如何有用的。例如,我们在C#中有扩展方法。它有助于语言设计者,他们可以自由地为WhereSelect等接口添加新方法,其中lambda表达式可以在不破坏binary code compatibility的情况下使用。因此,Java接口中的default方法可以以相同的方式提供帮助。

但是当谈到Java接口中的static方法时,我不确定它有多么有用。任何人都可以解释为什么static方法添加到接口以及在什么情况下它们对我们的开发人员有用。我还想听听default方法除了我提到的方法之外是否有不同的原因。

1 个答案:

答案 0 :(得分:3)

  

但是当谈到Java接口中的静态方法时,我不确定它有多么有用。

它否定了单独的“实用程序”类的情况,其唯一目的是容纳与一个特定接口相关的静态方法。

Collections总是让我想到的例子 - 如果从一开始就允许在接口上使用静态方法,那么整个类就没有必要了,静态方法可能只属于{{ 1}} interface(这是有道理的,因为它们都在Collection类型上运行。)

当然,向后兼容性意味着我们不能立即在API中取消这样的设计,但这意味着未来的库设计可以将其考虑在内,并希望因此产生更清晰的API。

相关问题