美文网首页
Android Support Annotations

Android Support Annotations

作者: 小猪x | 来源:发表于2017-10-26 09:55 被阅读0次

    使用注解:

    @Nullable 参数或返回值可以为空
    @NonNull 参数或返回值不可以为空

    @AnyRes 整型值 - 任何一种资源类型

    @XmlRes 整型值 - android.R.xml 类型
    @LayoutRes 整型值 - android.R.layout 类型
    @IdRes 整型值 - android.R.id 类型
    @MenuRes 整型值 - android.R.menu 类型
    @RawRes 整型值 - android.R.raw 类型

    @AnimatorRes 整型值 - android.R.animator 类型
    @AnimRes 整型值 - android.R.anim 类型
    @TransitionRes 整型值 - transition 类型

    @StyleableRes 整型值 - android.R.styleable 类型
    @StyleRes 整型值 - android.R.style 类型
    @AttrRes 整型值 - android.R.attr 类型

    @ColorRes 整型值 - android.R.color 类型
    @DrawableRes 整型值 - android.R.drawable 类型

    @ArrayRes 整型值 - android.R.array 类型

    @BoolRes 整型值 - 布尔类型
    @IntegerRes 整型值 - android.R.integer 类型
    @StringRes 整型值 - android.R.string 类型

    @FractionRes 整型值 - Fraction 类型,百分比
    @InterpolatorRes 整型值 - android.R.interpolator 类型
    @PluralsRes 整型值 - android.R.plurals 类型,复数字符串类型

    很多时候,我们使用整型常量代替枚举类型(性能考虑)

    @IntDef(flag=true, value={常量1, 常量2, ...})
    @Retention(RetentionPolicy.SOURCE)
    public @interface 注解名{} // 定义新注解 - 参数或返回值是否由指定常量组合而成

    • 注解接口中的方法没有参数、没有throws语句、不能使用泛型。

    @UiThread 运行在 UI 线程
    @MainThread 运行在 主 线程
    @WorkerThread 运行在 后台 线程
    @BinderThread 运行在Binder线程

    @Size(min=1) 集合/数组/字符串之类不可以为空
    @Size(max=数值) 集合/数组/字符串之类最大个数
    @Size(数值) 集合/数组/字符串之类个数
    @Size(multiple=数值) 集合/数组/字符串之类大小是几的倍数

    @IntRange 参数是 int 或 long
    @FloatRange 参数是 float 或 double

    @RequiresPermission(Manifest.permission.权限名)
    @RequiresPermission(anyOf = {Manifest.permission.权限名,
    Manifest.permission.权限名})
    @RequiresPermission(allOf = {Manifest.permission.权限名,
    Manifest.permission.权限名})

    @CallSuper 要求子类中重写的函数调用父类的被重写的函数

    @CheckResult(suggest="建议内容文字") 没检查返回值则AS发出包含建议内容的警告信息

    @VisibleForTesting 单元测试中让一些不可见的类对测试可见

    @Keep 类或方法不要混淆

    @Override 是否真的重载了一个来自父类的方法
    @Deprecated 不再鼓励使用或已弃用的属性、方法等
    @SuppressWarnings 抑制某种类型的警告
    @SafeVarargs 断言不定长参数可以安全使用
    @Generated 代码生成工具生成,不建议手动修改
    @FunctionalInterface 修饰接口表示其是带单个方法的函数式接口

    @Target(ElementType.如下元素类型)
    @Target({ElementType.如下元素, ElementType.如下元素}) // 支持多种元素类型
    ANNOTATION_TYPE 注解类型声明
    CONSTRUCTOR 构造函数
    FIELD 成员变量
    LOCAL_VARIABLE 局部变量
    METHOD 方法
    PACKAGE 包
    PARAMETER 方法参数或构造函数的参数
    TYPE 类(包括 enum)和接口(包括注解类型)

    TYPE_PARAMETER 类型参数
    TYPE_USE 类型的用途

    • 没有使用 @Target 修饰不能用于 TYPE_USE 和 TYPE_PARAMETER 元素类型

    @Retention(RetentionPolicy.访问范围)
    SOURCE 注解信息只会保留在 .java 源码里
    CLASS 注解信息只会保留在 .java 源码和 .class 文件里 - 默认
    RUNTIME 注解信息在运行时也保留

    @Documented 包含在被注解项的文档中

    @Inherited 可以被子类继承

    @Repeatable 可以在同一个项上面应用多次(Java8引入,如四个Java5引入)

    相关文章

      网友评论

          本文标题: Android Support Annotations

          本文链接:https://www.haomeiwen.com/subject/vuuhpxtx.html