シンタックスハイライト

アノテーションを処理する

かねてからアノテーションを使ってなにかつくろうと思っていたのですが、MinecraftのModを作っているのでそれ関係で。

JavaFXをやっているとお世話になるアノテーションは@FXML。GUIの要素を変数に代入してくれるっぽいアノテーションです。
今回はそんな感じでアノテーションをつけるとConfigから拾ってきた情報を代入してくれるアノテーションを作りました。
MinecraftForgeのConfigシステムでは、種別・キー・既定値・コメント・変数の型を渡す必要があります。
まず種別、今回はこれに集合を兼ねさせることにします。
最近Enumで管理するのがマイブームなので、これもEnumで管理することに。
システムにはStringだけ渡せばいいのでEnum定数名を渡すことに。
既定値は適当にGENERALという列挙子を作って入れておく。
次にキー、既定値はとりあえず空の文字列。
処理部分で変数名をここに代入したいと思います。
とはいってもリフレクションで簡単に取得できるのでちゃちゃっと三項演算子で。
そして既定値。これもとりあえずデフォルトは空文字列。
処理部分で変数に初期化時点で放り込まれている値を使いたい。
インスタンス用のアノテーションを作ることも考えたましたが、めんどいのでアノテーションつける変数は全てstaticにすることに。メタアノテーションでその辺いじれたりしないのだろうか。
コメント。これは割愛。
変数の型。うまい方法が思いつかなかったので地道に判定。GuavaのPrimitives.wrapでくるんでいるが、なぜこうしたかは覚えていない。
これらを適当にコンテナークラス作ってカテゴリのSetに放り込む。
あとはこれをConfigに落としこむだけ。以上。


0 件のコメント:

コメントを投稿