美文网首页
android常用注解以及自定义注解替代枚举

android常用注解以及自定义注解替代枚举

作者: ccccccal | 来源:发表于2017-12-22 10:29 被阅读388次

1. 自定义注解

/**
 * @author ALguojian
 * @date 2018/1/16
 * 自定义注解
 */
public interface UserType {

    String TOPIC = "topic";
    String ORIGIN = "origin";
    String MINI = "mini";

    @StringDef({TOPIC, ORIGIN, MINI})
    @Retention(RetentionPolicy.SOURCE)//指定注解仅存在与源码中,不加入到 class 文件中
    @interface Type {}
}

实体类:

public class User {

    @UserType.Type
    private String name;
    @NonNull
    private int age;

    public String getName() {
        return name;
    }
    public void setName(@UserType.Type String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

使用:


        User user = new User();
        user.setAge(12);
        user.setName(UserType.MINI);

        @UserType.Type String aa = UserType.MINI;

        switch (aa) {
            case UserType.MINI:
                break;
            default:
                break;
        }

2. @NoNull,不能为null

源码如下:

 @Retention(CLASS)
 @Target({METHOD, PARAMETER, FIELD})
 public @interface NonNull {
 }

3. @Nullable 可以为null

源码如下:

@Documented
@Retention(CLASS)
@Target({METHOD, PARAMETER, FIELD, LOCAL_VARIABLE, ANNOTATION_TYPE, PACKAGE})
public @interface Nullable {
}

4. Resource Type 资源类型注解

  • @AnimatorRes: animator资源类型
  • @AnimRes: anim资源类型
  • @AnyRes: 任意资源类型
  • @DrawableRes: drawable资源类型
  • @LayoutRes: layout资源类型
  • @ColorInt: RGB颜色类型

此类注解以Res结尾,比如@BoolRes, @IdRes, @IntegerRes, @StringRes, @ColorRes等,这里以@ColorRes为例说明

 @Documented
    @Retention(CLASS)
    @Target({METHOD, PARAMETER, FIELD, LOCAL_VARIABLE})
    public @interface ColorRes {
    }

列子:

public class MainActivity extends Activity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        getCurColor(R.id.ic_launcher);
    }
 
    void getCurColor(@ColorRes int color) {
        Toast.makeText(this, "Color: " + getString(color), Toast.LENGTH_LONG).show();
    }
}

我们给getColor函数的参数color加上了@ColorRes注解,即该参数是一个颜色资源,而上面我们上面传递的是id资源

5. 设置取值范围:Value Constraints

@Size, @IntRange, @FloatRange

private void test(@IntRange(from=0,to=100)int perent){

  • 集合不能为空: @Size(min=1)
  • 字符串最大只能有23个字符: @Size(max=23)
  • 数组只能有2个元素: @Size(2)
  • 数组的大小必须是2的倍数 (例如图形API中获取位置的x/y坐标数组: @Size(multiple=2)

相关文章

  • android常用注解以及自定义注解替代枚举

    1. 自定义注解 实体类: 使用: 2. @NoNull,不能为null 源码如下: 3. @Nullable 可...

  • Android进阶之自定义注解

    Android进阶之自定义注解 本篇文章内容包括: 注解的概念 元注解 自定义注解 Android自定义编译时注解...

  • Java 元注解

    学习Android APT需要我们具备自定义注解以及注解处理器的相关知识,这里简单介绍下Java元注解。注解是在J...

  • Android 注解替代枚举(enum)

    一、说明   笔记主要是记录一些本人在开发当中的学习和使用笔记。笔记内容包含一些本人觉得重要的知识点、本人易犯的错...

  • 实现validation注解进行校验枚举值

    背景: validation注解官方没有定义枚举类型的注解,于是这里自定义一个枚举类型注解,来实现对象的验证。 不...

  • 性能

    @IntDef替代枚举 @IntDef/@StringDef本身是个Android中提供的一种注解. 添加依赖:c...

  • 大连滕泰科技学习笔记2020-06-12

    1,注解 如何自定义注解?自定义注解应该遵循那些规则?基本类型String枚举Class 属性方法的名词publi...

  • kotlin-spring-data-jpa 开发脚手架

    1. 基本常用类: 注解 自定义kotlin注解自定义日志切面注解@Log,获取当前用户注解@CurrentUse...

  • 替代枚举的注解

    Android中新引入的替代枚举的注解有IntDef和StringDef,这里以IntDef做例子说明一下.

  • 在Swagger中显示枚举值

    一、实现代码 1.1 自定义注解 1.2 Swagger配置拦截自定义注解 1.3 枚举类 重点:重写toStri...

网友评论

      本文标题:android常用注解以及自定义注解替代枚举

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