groovy中运行时混合的目的是什么

groovy中运行时混合的目的是什么,groovy,Groovy,groovy中的运行时混合的目的是什么 混合是向类添加功能性而不存在多重继承问题的一种方法。但它在Groovy中的用途是什么?特质也可以做到这一点 注释@Mixin被认为是不推荐使用的。运行时mixin有一天会有同样的命运吗?运行时mixin使我们能够在运行时向现有类添加方法。答案的重要部分是“存在”和“运行时” 因此,您可以在运行时轻松地将新方法添加到任何第三方库。运行时混合使我们能够在运行时将方法添加到现有类中。答案的重要部分是“存在”和“运行时” 因此,您可以在运行时轻松地向任何第三方库添

groovy中的
运行时混合的目的是什么

混合是向类添加功能性而不存在多重继承问题的一种方法。但它在Groovy中的用途是什么?特质也可以做到这一点


注释
@Mixin
被认为是不推荐使用的。运行时mixin有一天会有同样的命运吗?

运行时mixin使我们能够在运行时向现有类添加方法。答案的重要部分是“存在”和“运行时”


因此,您可以在运行时轻松地将新方法添加到任何第三方库。

运行时混合使我们能够在运行时将方法添加到现有类中。答案的重要部分是“存在”和“运行时”


因此,您可以在运行时轻松地向任何第三方库添加新方法。

事实上,最近我发现使用mixin对我帮助很大

String.metaClass {
    invokeMethod {
        String name, args ->
            System.out.println "[$name] invokation with $args"
    }
}

class GroovyInterceptableWrapper 
    implements GroovyInterceptable {
}


String.mixin(GroovyInterceptableWrapper)

虽然如果我在那里使用trait而不是class,然后用traits调用
,我也会得到同样的结果。

事实上,最近我发现使用mixin对我帮助很大

String.metaClass {
    invokeMethod {
        String name, args ->
            System.out.println "[$name] invokation with $args"
    }
}

class GroovyInterceptableWrapper 
    implements GroovyInterceptable {
}


String.mixin(GroovyInterceptableWrapper)

不过,如果我在那里使用trait而不是class,然后用traits调用
,我会得到同样的结果。

我认为mixins有问题,然后traits作为更好的替代品出现了我的理解和@tim_yates一样-traits是mixin的替代品。我认为问题在于注释mixin?我认为mixin有问题,然后traits作为更好的替代品出现了。我的理解与@tim_yates相同-traits是mixin的替代品。我认为问题在于注释mixin?我可以用类别块和元类来解决。@user1432980,元类是执行此功能的真正“不安全”的方式。类别只适用于代码块,所以它们可以解决其他问题。我可以用类别块和元类来解决这些问题。@user1432980,元类是执行此功能的一种真正“不安全”的方式。类别只适用于代码块,因此它们可以解决其他问题。