Mixin Script Function in JavaFX
今日は mixin でちょっとした発見があったので書き留めておこうと思います。
JavaFX では mixin がサポートされてはいるのですが...
どうもまだ 仕様も実装も安定していないようで、試しては挫折の繰返し...
しかし、今回の発見により mixin がかなり熱くなってきました。自分の中で..
で何を発見したかというと...
Script Function も mixin されるということ。ちなみに Script Function とは Java でいうところの 静的メソッド みたいなもの
なんだ、そんなことか と思われる方もいるかもしれませんが、これはとても大きな意味を持っています。
従来、mixin は Java の interface + α的な感じで扱われてきました。
ところが Script Function の mixin は Java の static import のように 内部実装を簡略化するための仕組みとして利用できるのです。
例えば、ユーティリティ関数を集めた mixin クラス Util を extends すれば、それらの function を あたかも ビルトイン関数のように利用できるようになります。
しかも、mixin は通常のクラスの継承関係と干渉することがないので、CustomNode を extends する場合でも 以下のような感じで利用できるのです。
Util.fx
public mixin class Util {} protected function foo() { // mixin したクラス以外から利用できないように protected // 何らかの実装 }
MyNode.fx
public class MyNode extends CustomNode, Util { override function create(): Node { ... foo(); // Util の function を呼び出せる。 ... } } public function run() { foo(); // もちろん Script Function のなかでも呼び出せる。 }こんな便利な機能を使わない手はないでしょう。
と言うことで、次回 この機能のちょっとした利用例を紹介したいと思います。