gpt4 book ai didi

java - 随着 Java8 接口(interface)中默认方法的出现,类适配器现在可以在 Java 中使用

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:41:08 25 4
gpt4 key购买 nike

到目前为止,类适配器一直被认为在 Java 中是不可能的。 Previous question 关于同样的事情也这么说。

但是,Java 8 现在支持接口(interface)中的默认方法,一个类可以实现多个接口(interface)。因此,从具有多个默认方法的多个接口(interface)继承的类可以使一个接口(interface)的默认方法充当适配器并调用另一个接口(interface)(适配器)的默认方法。

那么,现在声明Java 8 支持类适配器是否正确?

最佳答案

据我所知,类适配器模式是关于创建一个扩展多个类型的类,以便它继承至少一个实现和至少一个以前未由实现直接实现的接口(interface),以便通过界面。

这在 Java 中是可能的,限制是 Adapter 只能继承一个实现(class)但继承多个 interface(Compare with this answer)。这个限制没有以任何方式改变。您仍然只能继承一个

interface 现在可以拥有default 方法是正确的,但这不会改变abstract 性质接口(interface),并且不使它们有资格在概念上承载实现。

即使 interface 只包含 default 方法(没有 abstract 方法),如果不创建一个新的 class 实现了接口(interface)。这样一个奇怪的 interface 可能只存在于主要支持适配器类的创建,这将不再是类适配器模式的一个例子,因为该模式是关于组合以前不相关的类型,而不是类型主要设计用于组合。

换句话说,在实践中,当您遇到多个实现类并希望合并到一个 Adapter 中时,您仍然会面临多个,您可以'不会通过继承组合,default 方法功能的存在不会改变这一点。

所以最重要的是,在 Java 8 之前,这种模式只能在有限制的情况下使用,而这些限制仍然适用于 Java 8。如果你想将这些限制视为“不可能”,那么它仍然不是可能……

关于java - 随着 Java8 接口(interface)中默认方法的出现,类适配器现在可以在 Java 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33367381/

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