2016-03-25 2 views
0

groovyのruntime mixinsの目的は何ですか?groovyの実行時ミックスインの目的は何ですか

複数の継承の問題がなくクラスにfunctionallityを追加する方法の全体をミックスします。しかし、Groovyの目的は何ですか?形質も同じことができます。

注釈@Mixinは、非推奨とみなされます。実行時ミックスインは同じ運命を1日持っていますか?

+0

私はmixinsに問題があったと思いますし、形質がより良い選択肢になったと思います。 –

+0

私の理解は@tim_yatesと同じです - 形質はmixinsの代替品です。 – cjstehno

+0

アノテーションミックスに問題があると思いましたか? – lapots

答えて

0

実際、最近私はミックスインを使用することが私を大いに助けたケースを発見しました。

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

class GroovyInterceptableWrapper 
    implements GroovyInterceptable { 
} 


String.mixin(GroovyInterceptableWrapper) 

再びけれども私はそこtraitの代わりにクラスを使用して、withTraits、私は同じ結果を達成しているだろうが呼び出された場合。

0

ランタイムミックスインは、実行時に既存のクラスにメソッドを追加する機能を提供します。答えの重要な部分は「存在する」と「ランタイム」です。

したがって、実行時にサードパーティのライブラリに簡単に新しいメソッドを追加できます。

+0

カテゴリブロックとメタクラスでこれを行うことができます。 – lapots

+0

@ user1432980、この機能を実行するには、メタクラスは実際には「安全でない」方法です。カテゴリはコードブロックに対してのみ機能するため、他の問題を解決します。 – SerCe

関連する問題