java——注解

为什么要学习注解?学习注解有什么好处?学完能做什么?

    1、能够读懂别人写的代码,特别是框架相关的代码

    2、让编程更加简洁,代码更加清晰

   3、让别人高看一眼

概念:

注解是一种这样的东西,标志是一个@符号,他能够关联数据和其他的信息,

比较正规一点的描述是:

        Java提供了一种程序中的元素关联任何信息和任何元数据的途径和方法。

java中的常见注解

JDK自带注解

         @Override  覆盖父类方法

         @Deprecated  这个方法过时了

          @suppressWarings("deprecation")  忽略警告


常见第三方注解

                    @Autowired

      Spring:   @Service

                    @Repository

                    @InsertProvider

    Mybatis:  @UpdateProvider

                     @Options

注解的分类

按照运行机制分

             1.源码注解  ——只存在于源码中,编译成.class文件就不存在了

             2.编译时注解——源码和.class文件中均存在 如:@override @deprecated等jdk自带的注解

            3.运行时注解——运行阶段仍然会起作用,甚至会影响运行逻辑的注解,如:spring的autowired

按照注解来源分类

           jdk自带注解

            第三方注解

            自定义注解

元注解:注解的注解叫元注解

自定义注解:

注解语法规则

          //@Target 注解的作用域(

                           CONSTRUCTOR    //构造方法声明

                            FIE LD   //字段声明

                            LOCAL_VARIABLE //局部变量声明

                             METHOD        //方法声明

                              PACKAGE        //包声明

                               PARAMETER      //参数声明

                              TYPE          //类接口

                             )

@Target({ElementType.METHOD,ElementType.TYPE})

            //@Retention生命周期(

                           SOURCE  :只在源码显示,编译时会丢弃

                           CLASS  :编译时会记录到class中,运行时忽略

                           RUNTIME :运行时存在,可以通过反射读取

                                   )

@Retention(RetentionPolicy.RUNTIME)

@Inherited  运行子类继承 (必须是子类实现父类,且父类有注解;才会继承类上面的注解)

@Documented  生成javadoc是会包含注解

//上面这4行 就是元注解

public @interface Description{    //使用@interface关键字定义注解

                String desc();  ——成员以无参无异常方式声明

               String author();

              int age() default 18; ——可以使用default为成员指定一个默认值

}

注意

           成员类型是受到限制的,合法的类型包括原始类型及String,Class,Annotation,Enumeration

          如果注解只有一个成员,则成员名必须取名为value(),在使用时可以忽略成员名和赋值号(=)

           注解类可以没有成员,没有成员的注解称为标识注解

使用自定义注解

使用注解的语法:

          @<注解名>(<成员名1>=<成员值1>,<成员名2>=<成员值2>,......)

@Description(desc="I am jxb",author="Mooc boy",age=18)

        public String eyeColor(){

                 return "red";

           }

解析注解

      通过反射获取类,函数或成员上的运行时注解信息,从而实现动态控制程序的运行逻辑。

解析子类的注解:

java——注解_第1张图片
Person.java
java——注解_第2张图片
Child.java


java——注解_第3张图片
Description.java
java——注解_第4张图片
Test.java
java——注解_第5张图片
接在Test.java代码上面
java——注解_第6张图片
效果

解析父类的注解:

其他代码与上面一样,只需要修改Child和Person类

java——注解_第7张图片
Person.java
java——注解_第8张图片
Child.java
java——注解_第9张图片
效果


自己学习笔记整理,不足之处望原谅!

你可能感兴趣的:(java——注解)