Android @ 注解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_39507260/article/details/85058506

@注解

1.java.lang包下

    //表明重写的是父类方法,检查方法名是否写错
    @Override
    //被弃用的API,不赞成使用
    @Deprecated

    //告诉编译器Lint,对警告保持静默
    //deprecation   使用了不赞成使用的类或方法时的警告
    //unchecked     执行了未检查的转换时的警告
    //fallthrough   当 Switch 程序块直接通往下一种情况而没有 Break 时的警告。
    //path          在类路径、源文件路径等中有不存在的路径时的警告。
    //serial        当在可序列化的类上缺少 serialVersionUID 定义时的警告。
    //finally       任何 finally 子句不能正常完成时的警告。
    //all           关于以上所有情况的警告。
    @SuppressWarnings("deprecation")
    //函数式接口,只定义了一个方法,可用Lambda
    @FunctionalInterface
    //抑制编译器警告,只能用在参数长度可变的方法或构造方法上,且方法必须声明为static或final,否则会出现编译错误
    @SafeVarargs

2.java.lang.annotation包下

    //javadoc文档化,使其成为API一部分
    @Documented

    //注解代码在何时生效
    @Retention(RetentionPolicy.CLASS)
    public enum RetentionPolicy {
        CLASS,  //编译class文件时生效
        RUNTIME,    //运行时生效
        SOURCE  //只在源码中生效,便宜是抛弃
    }

    //适用范围
    @Target(ElementType.TYPE)
    public enum ElementType {
        //类, 接口 (包括注释类型), 或 枚举 声明
        TYPE,
        //字段(包括枚举常量)
        FIELD,
        //方法
        METHOD,
        //正式的参数声明
        PARAMETER,
        //构造函数
        CONSTRUCTOR,
        //局部变量声明
        LOCAL_VARIABLE,
        //注释类型声明
        ANNOTATION_TYPE,
        //包声明
        PACKAGE,
        //类型参数声明
        TYPE_PARAMETER,
        //使用的类型
        TYPE_USE
    }

    //标记父类方法可以被子类继承
    @Inherited

3.android.annotation包下

    //不管minSdkVersion是多少,运行在制定API,最好判断API进行老旧版本兼容
    @TargetApi(23)
    //由于用了高版本API,以此屏蔽android lint错误
    @SuppressLint("NewApi")

4.android.support.annotation包下

 //方法返回值不能为空,参数不能为空
    @NonNull
    //允许为空
    @Nullable
    //检查返回值是否被消费,若没用上则报错
    @CheckResult
    //被标记的类和方法不会被混淆
    @Keep
    //指定参数值的范围
    @Size(min = 2,max = 50)
    //集合不能为空
    @Size(min = 1)
    //字符串最大长度为30
    @Size(max = 30)
    //指定参数范围
    @IntRange(from = 5,to = 55)
    @FloatRange
    //标记的方法,字段,类在测试时可见
    @VisibleForTesting
    //指定运行的线程
    @MainThread
    @UiThread
    @WorkerThread
    @BinderThread
    //代码需要在更高的API版本上运行,和@TargetApi作用相同,但是官方文档更推荐使用RequiresApi。
    @RequiresApi
    //子类重写父类方法时,希望父类其他方法也被调用
    @CallSuper
    //调用此方法需要的权限
    @RequiresPermission(Manifest.permission.ACCESS_FINE_LOCATION)
    @RequiresPermission(anyOf = {Manifest.permission.ACCESS_FINE_LOCATION,多个})
    //操作数据库时的读权限,写权限
    @RequiresPermission.Read
    @RequiresPermission.Write

    //检查传入参数是否是对应资源
    @AnimatorRes
    @AnimRes
    @ArrayRes
    @AttrRes
    @BoolRes
    @ColorRes
    @ColorInt
    @ColorLong
    @DimenRes
    @DrawableRes
    @FontRes
    @FractionRes
    @IdRes
    @IntegerRes
    @LayoutRes
    @InterpolatorRes
    @XmlRes
    @RawRes
    @StringRes
    @MenuRes
    @StyleableRes
    @StyleRes
    @AnyRes
    @AnyThread

猜你喜欢

转载自blog.csdn.net/qq_39507260/article/details/85058506