【レポート】

アノテーションを配列やジェネリックにも - JSR 308、Java SE 7で採用か?

    後藤大地  [2006/11/01]

    Java Community Process, JSR 308 Expert Groupは10月17日から10月30日(米国時間)にかけて「JSR 308: Annotations on Java Types」のJSR Review Ballotを実施。16票中、賛成票13および無投票3を獲得し、The Executive Committee for SE/EEによって認証された。

    同規約はJavaアノテーションの拡張を提案するもの。現在Javaで採用されているアノテーションはクラス、メソッド、フィールド、変数に対する修飾として活用することができるが、これをさらに広い場所に対して適用可能にしようとする。同提案では、アノテーションの適用場所を拡充することは現行のJavaアノテーションシステムの限界を取り去り、新しいアノテーション活用方法を導出することになると述べられている。

    次に同提案においてサンプル表示されているアノテーションの活用提案例を示す。

    リスト.1 メソッドレシーバ

    public int size() @Readonly { ... }

    リスト.2 ジェネリックにおける型引数

    Map<@NonNull String, @NonEmpty List<@Readonly Document>> files;

    リスト.3 配列

    Document[@Readonly] docs1;
    Document[][@Readonly] docs2 = new Document[2][@Readonly 12];
      docs1は変更不可能な1次元配列(Documentsインスタンスは変更可能)
      docs2は変更不可能な1次元配列に対する変更可能な配列
                                  (Documentsインスタンスは変更可能)

    リスト.4 型キャスト

    myString = (@NonNull String)myObject;

    リスト.5 型テスト

    boolean isNonNull = myString instanceof @NonNull String;

    リスト.6 オブジェクトの作成

    new @NonEmpty @Readonly List(myNonEmptyStringSet)

    リスト.7 型パラメータバウンド

    class Folder { ... }

    リスト.8 クラス継承

    class UnmodifiableList implements @Readonly List<@Readonly T> { ... }

    リスト.9 例外

    void monitorTemperature() throws @Critical TemperatureException { ... }

    JSR 308におけるアノテーション拡充の提案は、従来の「JSR 250: Common Annotations for the Java Platform」や「JSR 305: Annotations for Software Defect Detection」と互換性があり、なんらセマンティックスの変更はない。アノテーションの適用場所を広げるところに主眼がおかれている。

    また具体的な提案内容として、新しい属性としてRuntimeVisibleTypeAnnotationsおよびRuntimeInvisibleTypeAnnotationsの追加を考えているとされている。これら属性は構造的には既存のRuntimeVisibleAnnotationsおよびRuntimeInvisibleAnnotations属性によく似ている。

    関連記事

    関連サイト

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン