2016-03-25 46 views
0

groovy中runtime mixins的用途是什麼?groovy中運行時混入的目的

混合整體Mixins添加功能到類沒有多重繼承問題的方法之一。但在Groovy中它的目的是什麼?特質可以做同樣的事情。

註釋@Mixin根本不被考慮棄用。運行時mixin有一天會有相同的命運嗎?

+0

我認爲mixin有問題,然後性狀作爲一個更好的替代品 –

+0

我的理解與@tim_yates相同 - 特徵是mixin的替代品。 – cjstehno

+0

我認爲問題與註釋混合? – lapots

回答

0

其實,最近我發現一個使用mixin幫助我很多的例子。

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

class GroovyInterceptableWrapper 
    implements GroovyInterceptable { 
} 


String.mixin(GroovyInterceptableWrapper) 

雖然再次,如果我使用有trait,而不是類,然後調用withTraits我也可以達到同樣的效果。

0

運行時mixin使我們能夠在運行時向現有類添加方法。答案的重要部分是「存在」和「運行時」。

因此,您可以在運行時輕鬆地將新方法添加到任何第三方庫。

+0

我可以做到這一點與類別塊和元類。 – lapots

+0

@ user1432980,Metaclasses是一種非常「不安全」的方式來執行此功能。類別僅適用於代碼塊,因此它們可以解決其他問題。 – SerCe