2

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

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

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

然而,在 Java 8 中,接口中引入了默认方法实现,允许在现有接口中指定附加方法以确保向后兼容性。但是,我不明白为什么你会选择这个选项而不是前一个选项 - 这样做会在创建质量差的代码方面出现严重错误。

有人可以详细说明一下吗?

4

1 回答 1

0

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

forEach要了解默认方法的重要性,请考虑将方法添加到Iterable接口需要进行多少更改。如您所知IterableCollection它的父级是 java 中所有现有列表类型的父级。Iterable在不引入方法的情况下添加一个简单的方法需要多么巨大的改变default

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

于 2018-11-22T13:30:02.773 回答