美文网首页
注解Annotation

注解Annotation

作者: 崽子猪 | 来源:发表于2019-05-26 15:27 被阅读0次

    一、注解概念

    1.什么是注解(Annotation)?

    就是Java提供了一种元程序中的元素关联任何信息和着任何元数据(metadata)的途径和方法

    基本的规则:Annotation不能影响代码的执行,无论增加、删除Annotation,代码都始终如一的执行.(由于JVM的特点导致的)

    2.什么是元数据(metadata)?

     [用来描述数据的数据]  [用来描述数据但本身也是数据] [描述代码之间的关系和其他内在资源]

        1>元数据以标签的形式存在于Java代码中

        2>原数据描述的信息是类型安全的

        3>原数据需要编译器之外的工具额外的处理用来生成其它的程序部件

        4>元数据可以只存在Java源代码级别,也可以存在于编译之后得Class文件内部


    二、注解分类

    1.系统内置标准注解

        1> Override[标记型的注解](用来关注方法)


    父类方法 子类继承父类方法

    加了@Override注解之后子类继承父类之后所使用的方法名是父类里没有的话 Overrid就会爆红


        2>Deprecated[标记型的注解](表示代码已经过时了)


    父类方法 子类方法

    如果被标志了@Deprecated这个注解那么子类继承父类方法之后他会被划上过时那条横线.


    3>SuppressWarnnings[抑制编译器的一个警告](用于选择关闭编译器这个类成员的方法的一些警告)

    SuppressWarnnings注解demo图

    2.元注解

    1>@Target 说明我们注解所修饰的对象的修饰范围

    ElementType.TYPE:描述类、接口和枚举的声明

    ElementType.FIELD:描述域

    ElementType.Constand:描述构造器

    @Target TYPE

    2>@Retention 表面这个注解被保留的时间长短

    RetentionPoicy.RUNTIME:表示只在运行时有效

    RetentionPoicy.SOURCE:表示只在源文件中有效

    RetentionPoicy.CLASS:表示只在class文件中有效

    @Retention.RUNTIME

    3>@Documened 用来描述其他类型的注解 被标注为公共程序员的Api 这个注解是没有成员的

    @Documened

    4>@Inherited 标记型的注解 表示某个被标注的类型是可以被继承的

    @Inherited 

    三、Android support annotations

         1.Nullness注解 可以用来标识我们参数或者返回值为null或者不为null

            1) @NonNull 返回值不能为空

            2) @Nullable 返回值可以为空


    表示参数和返回值是不能为null的

        2.ResourceType注解  为了区分资源Id或者是String类型的资源还是图片类型的资源 【资源类型的注解 】

            @StringRes 要传递String类型的资源ID (R.String.app_name)


    如果传递了R.Style.AppTheme就会报错

        3.Threading 注解 是一个线程注解

                @WorkerTherad 表明操作是在子线程


    如果当前操作不是在子线程那么会爆红

                @UiThread 表明操作是在主线程

    如果当前操作不是在主线程那么会爆红

        4.Overrding Methods注解 你的方法要重写你父类的方法,这个时候你又想你父类的方法被调用

                @CallSuper


    调用ActionBarActivity

    四、总结

        1.注解是如何被处理的?

            当Java源代码编译的时候,编译器使用一个插件[一个注解处理器],用来处理这些注解.当处理完这些源码后它会产生一个报告信息.会将这些数据加入到.class文件中,可以查找相应的原数据并做相应的处理   

             也可以通过反射来处理我们注解

        2.Annotation    

            提供了程序本身逻辑外额外的信息,只是用来修饰这些信息.帮助我们更快的处理数据用的.

            注解的代码对我们的代码是没有直接影响的,它不可以与我们的代码进行交互,可以保证我们组件的安全性.也就是说可以保留这些注解信息.

    相关文章

      网友评论

          本文标题:注解Annotation

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