apt

variable injection

apt

たぶん発想がアフォすぎて誰も手を出さなかったinjection. public class Hoge { @Injection private static final String[] FOO = {"dummy"}; public static void main(String[] args) { @Injection int bar = 0; System.out.println(FOO[bar]); } }annotati…

Property

同じ日付に2回トラバ送ってもしょうがないので省略。 下の項と同じネタで。書き方はともかくとして、こんな使い方できそうですねぇ annotation ? annotates ?f name Property getter = ?g setter = ?s apply TemplateProcessor.process(?f, ?g, ?s) public c…

id:masataka_k:20060215 からのインスパイア。 public class ClassTmpl { private String _member; public Clazz(String test) { _member = test; } public String template() { return _member != null ? _member : ""; } } public class Mixin { private S…

イレイジャ変換

Aptとreflectionのブリッジ書いてて気づいたんですけど、宣言と型を明確に分けるってのも悪くないですね。 java.lang.Class 宣言:java.lang.Class 型:java.lang.Class つか、これやらないと、どっちかにイレイジャ変換を手書きで入れることになるわけですが……

クラスローダ嫌い

配列型をロードするクラスローダは、そのコンポーネントタイプと同じらしい。 仮にintをロードするクラスローダがあったとして、それをCpと名づけると、 int[].getSuperClass() -> Object より、java.lang.Objectをロードできる。 java.lang.Object.getClass…

value annotation

apt

id:masataka_k:20060106 への回答。java.lang.annotation.Target より抜粋。 このメタ注釈は、宣言された型の使用目的が複雑な注釈型宣言のメンバ型だけであることを示します。これは直接的な注釈には使用できません。 @Target({}) public @interface Member…

Apt wrapper

apt

某所でご馳走になってきました。眠くなる前にアイデアをまとめておきます。親クラスの誰かが "com.example.Required" の名前を持つ注釈を持つ注釈を持っている場合、そのクラスで宣言された全てのメソッドに対して処理を行う。その際、メソッド m と 注釈 a …

Annotation Restricted

apt

「Annotation にも型制約を」ということで、少々考えてみました。AspectをAnnotationでウィービング(?)するのが流行ってますが、そのノリで上位クラスに制約を掛け、これをコンパイルすればいいのではと。ちなみに、java.lang.annotation.AnnotationFormatEr…

パーサコンビネータ

プラガブルなパーサ、及び上位パーサについて考え中。 やっぱりパーサ・ジェネレータで静的なパーサ書くより、Haskell Parsec の Java版 JParsec でも使って動的文法にでも対応させて見ましょうかね…

apt

いい名前ですね。

Java Annotation をまともに使い始めてみる。

apt

スパイラルコンパイラとしてはアリなんだろうけど、使う人のことをまったく考えていないすばらしいツールです。コマンドラインをたたくのが面倒だったので、とりあえずこんな感じ? <target name="compile"> <mkdir dir="${build.dest}" /> <mkdir dir="${build.lib}" /> <java classname="com.sun.tools.apt.Main" classpathref="klasspath" fork="true"> <arg value="-cp"/> <arg pathref="klasspath"/> </arg></arg></java></mkdir></mkdir></target>

apt Ant task

apt

どこかに落ちてないか探したけど、さくっと見つからず。ソース見る限りでは20時間もあれば作れそうだけど、面倒だなぁ…