【发布时间】:2015-11-03 10:28:30
【问题描述】:
来自this blog:
我已经使用 Java 编程超过 16 年,其中近一半的时间都在教它。所以需要一点练习才能停止重复这句话:“接口可能只包含公共和抽象的方法。”从 Java 8 开始,这种说法不再正确。现在可以向 Java 接口添加实例和静态方法。
新的 C# 版本是否也允许这样做,或者在某些预期的将来会允许这样做吗?
我一直觉得 Interface 在理论上很好,但在实践中给您的界面消费者带来了许多类型的维护噩梦,如文章中所述。
更新:我也对批评者感兴趣,如果您阅读了作者的文章,尤其是关于抽象类替代不能解决现实世界问题的文章,那就更是如此了。
【问题讨论】:
-
对我来说,这些“改进”听起来很糟糕。接口中的默认方法?你在开玩笑吗?如果你有一些基本的通用逻辑,用
virtual方法定义一个抽象类。接口是一个很好的工具,它有助于分离定义和实现。 “默认”方法绝对不遵循这个逻辑。 -
@YeldarKurmangaliyev 老实说,在我看到它是如何在行动中使用之前,我不会把它写下来。我相信他们添加它的主要原因是在他们的集合中支持 C# 已经解决的 Lambda 扩展扩展方法非常好,我认为我们不需要另一种方法来做 C# 中已经可能的事情,但我们必须看看人们是否想出了巧妙的东西,以使其在现有事物的扩展之外有意义。跨度>
-
@YeldarKurmangaliyev 我希望Java设计者有一些基本的通用逻辑;)这已经没有什么功能要求了,你能准确反驳作者的论点吗。