美文网首页
用注解提供代码的静态检查

用注解提供代码的静态检查

作者: 喧嚣的风儿 | 来源:发表于2016-09-08 13:22 被阅读32次

Android 包android.support.annotation包提供了诸如 @IntDef 和 @StringDef 等注解,可以让AS, Lint 提供静态代码检查功能

用注解型枚举代替普通静态常量和枚举

原因:

  1. 枚举销毁的内存是普通静态常量的两倍
  2. 普通静态常量不能提供检查

枚举:

public class Demo{
   enum Status{
     IDLE,PROCESSING,DONE,CANCELLED
    }
  Status status;
  void setStatus(Status status){
    this.status = status;
  }
}

普通静态常量:

public class Demo{
  public static final int IDLE = 0;
  public static final int CANCELLED = 1;
  
  public int status;
  //这里的参数不能提供检查,可以传入任意int
  public setStatus(int status) {
    this.status = status;
  }
}

枚举型注解:

 public static class Status {
        public static final int IDLE = 0;
        public static final int CANCELLED = 1;
   
    @Retention(RetentionPolicy.SOURCE)
        @IntDef({Status.IDLE, Status.CANCELLED})
        public @interface StatusTypeDef {
        }
   
        public int status;
   
        @StatusTypeDef
        public int getStatus() {
            return status;
        }

        public void setStatus(@StatusTypeDef int status) {
            this.status = status;
        }
    }

其他利用注解增强代码的静态检查

dependencies { compile 'com.android.support:support-annotations:23.3.0'}

official Android annotations guide

annotations description
@Nullable Can be null.
@NonNull Cannot be null.
@StringRes References a R.string resource.
@DrawableRes References a Drawable resource.
@ColorRes References a Color resource.
@Interpolator Res References a Interpolator resource.
@AnyRes References any type of R. resource.
@UiThread Should only be called on the UI thread

例子:

- public View onCreateView(@NonNull Context context);
- public abstract void setTitle(@StringRes int resId);
- public void setAlpha(@IntRange(from=0,to=255) int alpha) {}
- public void setAlpha(@FloatRange(from=0.0, to=1.0) float alpha){}

相关文章

  • 用注解提供代码的静态检查

    Android 包android.support.annotation包提供了诸如 @IntDef 和 @Stri...

  • ts笔记

    教程 1.ts提供静态代码分析:检查代码结构和类型注解;

  • Java的注解Annotation

    注解使代码简单易读,提供编译器类型检查,并且可以通过注解构造代码处理工具。 日常开发中我们会遇到很多注解,如@Re...

  • 注解简介

    注解的作用 向 Lint 之类的代码检查工具提供提示,帮助检测这些更细微的代码问题。您可以将注解作为元数据标记附加...

  • Android自定义Lint的二三事儿

    概述 Lint 是 Android studio 提供的一款静态代码检查工具,它可以帮助我们检查 Android ...

  • java:自定义注解以及注解解析

    注解主要是用来减少代码的冗余,用较少的代码就可以实现更多的功能. java提供了四类元注解,我们构建新的注解都是用...

  • iOS Code Review - Objective-C代码静

    Code Review 代码评审,代码静态检查,Objective-C代码静态检查工具——OCLint Githu...

  • ESLint 介绍

    ESLint 是用来检查我们写的 JavaScript 代码是否满足指定规则的静态代码检查工具。 通过用 ESLi...

  • 静态代码分析工具汇总

    静态代码扫描,借用一段网上的原文解释一下(这里叫静态检查):“静态测试包括代码检查、静态结构分析、代码质量度量等。...

  • 2021-07-27 注解与泛型

    注解不属于程序本身,注释有多种用途,其中包括:编译前:为编译器提供编译检查的依据,辅助检查代码错误或抑制检查异常;...

网友评论

      本文标题:用注解提供代码的静态检查

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