アノテーションのメンバー変数

アノテーションでbooleanとかのメンバー変数を持ってるときに指定してないっていうのを表現できないかなーっと思ってて、ちょっと思いついたこと。

public @interface Aaaa {
    boolean b() default false;
}

こうしてしまうとb()がfalseの場合、指定したのか指定していないのかがわからなくなってしまうので、、、

public @interface Aaaa {
    boolean[] b() default {};
}

みたいな感じにして配列にしてしまって、指定したのか指定していないのかを配列の長さで判断する。。。

使う側は

@Aaaa;

@Aaaa(b = false);

@Aaaa(b = { false });

@Aaaa(b = { false, false });

って感じで指定できる。
けど、なんか裏技みたいに見えるし、最後のような元々の意図とは違う指定ができてしまうところがなんか嫌だね。。。