在Java中实现Mixin?[已关闭]默认方法

2022-08-31 16:40:00

使用Java 6,我如何实现mixin?这在Ruby中非常容易和可能。如何在Java中获得类似的效果?


答案 1

你可以使用CGLIM来实现这一点。类 Mixin 能够从多个接口/对象委托生成动态类:

static Mixin    create(java.lang.Class[] interfaces,
                        java.lang.Object[] delegates)
static Mixin    create(java.lang.Object[] delegates)
static Mixin    createBean(java.lang.Object[] beans) 

答案 2

默认方法

我知道这个问题说的是Java 6,但在Java 8中,我们将有一个相当不错的替代方案:默认方法

我们将能够添加接口方法的“默认”实现,因此我们可以添加新方法,而不会破坏实现接口的每个类。

只要您的 mixin 不需要状态,就可以在接口中编写代码。然后,您的类可以实现任意数量的这些接口,并且繁荣,您就有了mixins

这是对系统的滥用吗?有点,但它不会进入任何多重继承问题,因为没有状态。

当然,这也是这种方法的最大缺点。


推荐