Java中的mixin示例?
在 Effective Java 的第 93-4 页上,我遇到了 mixin 这个术语。但我发现很难想象mixin到底是什么。任何人都可以通过提供Java中mixin的示例来帮助我吗?
在 Effective Java 的第 93-4 页上,我遇到了 mixin 这个术语。但我发现很难想象mixin到底是什么。任何人都可以通过提供Java中mixin的示例来帮助我吗?
您指的是 Effective Java 的第 18 项 - 更喜欢接口而不是抽象类,我相信下面这一节尤其如此:
接口是定义混频器的理想选择。从广义上讲,mixin 是类除了其“主类型”之外还可以实现的类型,以声明它提供了一些可选行为。例如,一个mixin接口,它允许一个类声明它的实例相对于其他相互可比较的对象进行排序。这样的接口称为mixin,因为它允许将可选功能“混合”到类型的主要功能中。抽象类不能用于定义 mixins,原因与不能将其重构到现有类上的原因相同:一个类不能有多个父类,并且在类层次结构中没有合理的位置来插入 mixin。
Comparable
从本质上讲,在抽象类和接口中指定功能之间的主要区别之一是接口版本可以在许多不同的类层次结构中使用,而抽象类只能在一个类层次结构树中使用,因为Java只允许单继承。
在java中没有mix-in这样的东西,因为没有办法将一段代码添加到单独层次结构中的类中。这样做需要多重继承或最少的Scala类型特征。