美文网首页
Java注解

Java注解

作者: 兜里有糖_606e | 来源:发表于2018-03-06 13:43 被阅读0次

    1、注解的作用
    代替xml配置文件,servlet3.0中,就可以不再使用web.xml文件,而是所有配置文件都使用注解!注解是由框架读取的。
    2、注解的使用
    2.1、定义和使用注解类

    /**
     * 注解类
     * @author John
     */
    public @interface MyAnno {
    }
    //注解可以作用在:类(接口或者枚举)、属性、方法、构造器、包、参数、局部变量、全局变量。
    @MyAnno//注解放在类上
    class Demo{
    @MyAnno//注解放在全局变量上
    String str;
    @MyAnno//注解放在构造器上
    Demo(){
    }
    @MyAnno//注解放在方法上
    void fun1(@MyAnno String s){//注解放在参数上
        @MyAnno//注解放在局部参数上
        String str1;
    }
    }
    

    2.2、注解的属性
    定义属性:类型 名称 ()

    public @interface MyAnno {
    int age();
    String name();
    }
    

    使用时给其赋值

      @MyAnno(age=100,name="john")//注解放在类上
    

    设置默认值:

      int age() default 100;
    

    在有默认值的时候在使用的时候可以不进行赋值
    在只给名为value赋值的时候可以只写值,不写名
    注解的属性类型可以是8中基本属性类型,String,Enum,Class,注解类型,包装类型不能用
    2.3、注解的作用域限定

      @Target(ElementType.METHOD)
    

    public static final ElementTypeTYPE 类、接口(包括注释类型)或枚举声明
    public static final ElementTypeFIELD 字段声明(包括枚举常量)
    public static final ElementTypeMETHOD 方法声明
    public static final ElementTypePARAMETER 参数声明
    public static final ElementTypeCONSTRUCTOR 构造方法声明
    public static final ElementTypeLOCAL_VARIABLE 局部变量声明
    public static final ElementTypeANNOTATION_TYPE 注释类型声明
    public static final ElementTypePACKAGE 包声明
    2.4、注解的保留策略

      @Retention(RetentionPolicy.RUNTIME)
    

    源代码文件:(SOURCE)注解只保留在源代码中,当编译时就被忽略
    字节码文件:(CLASS)注解保留到class字节码文件中,类加载到JVM中会被忽略
    JVM中:(RUNTIME)会把注解加载到JVM内存中
    限定注解的保留策略
    2.5、反射注解
    类上的注解:

    @Test
    public void fun1() {
        Class<Demo> c = Demo.class;
        MyAnno myAnno = c.getAnnotation(MyAnno.class);
        System.out.println(myAnno.name());
    }
    

    获取其他元素上的注解:

      MyAnno myAnno = (class/method/constructor/field/accessibleObject).getAnnotation(MyAnno.class);
    

    相关文章

      网友评论

          本文标题:Java注解

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