@Target(value=METHOD) @Retention(value=RUNTIME) @Documented public @interface Branch
この演算子は、入力をデータの内容を元に分類し、それぞれの出力に振り分ける。
一つの引数を取り、分岐先を表現する列挙定数を返す。
引数には同メソッドで宣言した型変数を利用できるが、 戻り値の型に型変数を含めることはできない。
この注釈を付与するメソッドは、一般的な演算子メソッドの要件の他に、 下記の要件をすべて満たす必要がある。
public として宣言されている abstract 以下は演算子クラスの例である。
public abstract class <Operator-Class> {
    ...
    /**
     * Returns the record status.
     * @param hoge the target record
     * @return the branch target status
     */
    @Branch
    public Status select(Hoge hoge) {
        int price = hoge.getPrice();
        if (price < 0) {
            return Status.ERROR;
        } else if (price < 1000000) {
            return Status.CHEAP;
        } else {
            return Status.EXPENSIVE;
        }
    }
    /**
     * Represents price status.
     */
    public enum Status {
        /**
         * Expensive price.
         */
        EXPENSIVE,
        /**
         * Cheap price.
         */
        CHEAP,
        /**
         * Erroneous price.
         */
        ERROR,
    }
    ...
}
Copyright © 2011–2019 Asakusa Framework Team. All rights reserved.