有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么默认方法在Java8中包含接口,而不是向集合框架添加额外的接口?

通常,一旦发布到生产环境中,接口就会被冻结

因此,如果您需要添加功能,您在Java中的选项将是将现有接口扩展到新接口,该接口描述了添加的功能

这确保了向后兼容性,即您不会破坏原始接口中指定的契约,并且您可以自由实现新接口来描述您使用的具有附加功能的特定类的新版本

然而,在Java8中,接口引入了默认方法实现,允许在现有接口中指定其他方法以确保向后兼容性。但是,我不明白为什么您会选择此选项而不是前一个选项,而这样做会导致在创建低质量代码方面出现严重错误

有人能详细说明一下吗


共 (1) 个答案

  1. # 1 楼答案

    显然,在Java8中引入默认方法的最重要原因是向后兼容性。正如您提到的,在这个特性之前,要向接口类添加一个新方法,我们应该创建一个继承类,这绝对不是一种有效的方法。因为它让开发者改变所有的对象类型,如果他们想使用新开发的特性的话

    <> P>了解默认方法的重要性,考虑需要添加多少更改来将^ {CD1>}方法添加到^ {CD2>}接口。正如您所知IterableCollection的父级,它是java中所有现有列表类型的父级。在不引入default方法的情况下,向Iterable添加一个简单的方法需要多么巨大的变化啊

    此外,现在我正在使用默认方法来减少代码编写,我不知道为什么在任何网站上都没有提到它。方法行为在某些继承类中可以是相同的,并且我可以使用默认方法在父接口中轻松实现该行为,并在任何我想要的地方清楚地更改该行为。然而,这不是什么大不了的事,但它确实让我对发展感到舒服