尽量多使用注解来提高代码质量

案例
public class DiagonalLayoutSettings {

    @Retention(SOURCE)
    @IntDef({ BOTTOM, TOP, B_T})
    public @interface Position {
    }

    public final static int LEFT = 1;
    public final static int RIGHT = 2;
    public final static int BOTTOM = 4;
    public final static int TOP = 8;
    public final static int B_T = 16;

    @Retention(SOURCE)
    @IntDef({ DIRECTION_LEFT, DIRECTION_RIGHT })
    public @interface Direction {
    }

    public final static int DIRECTION_LEFT = 1;
    public final static int DIRECTION_RIGHT = 2;

    ...

}

这里的@interface Position 和 public @interface Direction就是自己定义的注解.

//用注解去修饰方法参数.

public class DiagonalLayout extends FrameLayout {

    DiagonalLayoutSettings settings;


    public void setPosition(@DiagonalLayoutSettings.Position int position) {
        settings.setPosition(position);
        postInvalidate();
    }

}

要控制setPosition方法的输入参数的合法性, 就可以使用注解来完成. 让这个方法只接收

    public final static int LEFT = 1;
    public final static int RIGHT = 2;
    public final static int BOTTOM = 4;
    public final static int TOP = 8;
    public final static int B_T = 16;

这几个合法的int值.

调用方法

合法的调用:

setPosition(DiagonalLayoutSettings.TOP);

错误的非法调用:

setPosition(9);

编译器会给出错误提示:

Must be one of: DiagonalLayoutSettings.BOTTOM, DiagonalLayoutSettings.TOP, DiagonalLayoutSettings.B_T less... (⌃F1) 

但会编译成功.

多使用这种设计模式非常的好.

—- DONE.—-

    原文作者:ahking17
    原文地址: https://www.jianshu.com/p/f9f510e8582b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞