annotation

1743 ワード

public class LoginAppbarDeco extends AppbarDecorator {
public LoginAppbarDeco(@StringRes int titleRes, @DrawableRes int imageTitleRes, Runnable leftRunnable) {
    super(R.color.white, R.drawable.btn_top_back, titleRes, imageTitleRes, leftRunnable);
}
}
こんなハーモニーが
@StringResのキャラクターを知りたいです.
まず名前はAnnotation
3つの形態がある.

  • Nullness annotattions

  • Resource type annotations

  • IntDef and StringDef annotations
  • Nullness annotations
  • @Nonnull
    これは、伝達されたparamがnullではないことを意味します.
    nullが明示的に渡されると、警告が表示されます.
    逆に@Nullableもあります.
  • Resource type annotations
  • 転送されるリソースのタイプを指定できます.
    void sayHello(@StringRes int id){
    
         ...
    
    }
    
    ここで渡されたidがstring resでない場合、errorが表示されます.
    @StringRes、@DrawableRes、@ColorRes、@InterpolatorResなど.
    @AnyResでもいいです.
  • IntDef and StringDef annotations
  • IntDefまたはStringDefは、Annotationを定義するときに渡される値を検証できます.これは良いです.
    public class IceCreamFlavourManager {
        private int flavour;
        public static final int VANILLA = 0;
        public static final int CHOCOLATE = 1;
        public static final int STRAWBERRY = 2;
        @IntDef({VANILLA, CHOCOLATE, STRAWBERRY})
        public @interface Flavour {
        }
        @Flavour
        public int getFlavour() {
            return flavour;
        }
        public void setFlavour(@Flavour int flavour) {
            this.flavour = flavour;
        }
    }
    
    前述したように、Flavierコメントを定義して使用します.
    paramに渡される値が定義された3つの値でない場合は、エラーを表します.
    また,IDEでは提案論点としても機能する.
    出典:https://aroundck.tistory.com/4637[猪王遊園地]
    値を全体的に注釈するだけ