gpt4 book ai didi

java - 为什么接口(interface)默认方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:11:47 26 4
gpt4 key购买 nike

学习 java 8 默认方法。这link就像互联网上的任何其他资源一样

In ‘the strictest sense’, Default methods are a step backwards because they allow you to ‘pollute’ your interfaces with code. But they provide the most elegant and practical way to allow backwards compatibility. It made it much easier for Oracle to update all the Collections classes and for you to retrofit your existing code for Lambda.

我的理解是 java 8 dev/designers 在接口(interface)中提供了默认方法,因此所有实现类都不必不必要地覆盖相同的行为,从而提供向后兼容性。例如:- 如果 ForEach 方法不是默认方法,则每个集合实现类都必须实现它。同意。

为了克服这个问题,我们可以让一个类提供这些默认方法的实现,然后实现像 arraylist 等类可以已经扩展了。这样我们就可以统计 java 基础知识,即可重用性和抽象性,即减少接口(interface)污染

我确信 Java 8 开发人员/设计人员已经考虑过这一点,因为他们学得更多,我在这里遗漏了一些东西。有人可以在这里提供帮助,以便我们开发人员也可以在这一重大变化中处于领先地位吗?

最佳答案

在 Java 8 之前,接口(interface) 只能有抽象方法。这些方法的实现必须在单独的类中提供。因此,如果要在 interface 中添加新方法,则必须在实现相同接口(interface)的类中提供其实现代码。

为了克服这个问题,Java 8 引入了默认方法 的概念,它允许接口(interface)具有带有实现的方法,而不影响实现接口(interface) 的类。

默认方法 的引入是为了提供向后可比性,这样现有的接口(interface) 就可以使用 lambda 表达式,而无需在实现类中实现这些方法。 默认方法 也称为防御方法虚拟扩展方法

关于java - 为什么接口(interface)默认方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33721242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com