Java注解

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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值