java注解

JDK自带的三个注解:
@Override        子类覆写父类的方法,或实现接口中的某个方法。
@Deprecated    表明此方法已经过时了,不提倡使用
如果一定要使用这个过时的方法,就需要使用
@SuppressWarnings("deprecation")           抑制这个警告
 
常见的第三方注解:
Spring:@Autowired         自动植入,不需要写配置文件配置bean
              @Service             用于标注业务层组件
              @Controller         用于标注控制层组件,表明该类为控制器类
              @RequestMapping       请求映射
 
 
注解按照运行机制分为:
            源码注解          注解仅存在于源文件中,编译成.class文件就不在了
            编译时注解       注解在源码和.class文件中都存在(如JDK自带的)
            运行时注解       在运行阶段还起作用,甚至影响程序运行逻辑
 
元注解:给注解添加的注解,称为元注解。
@Target(ElementType.Method)        作用域,表明该注解使用到方法上
@Retention(RetentionPolicy.RUNTIME)       生命周期
@Inherited           可以继承的
@Document         生成javadoc时会包含注解
public @interface Desc{
         String desc();              //无参数,无异常方式成员
         String  author();
         int age() default 18;      //可以自动设置默认值
}
 
 
如果注解只有一个成员,则成员名必须取名为value(),在使用时可以忽略成员名和赋值号(=)
 
 
如何使用自定义注解:
@Desc(desc="...",author="....",age=23)
public String foo{
       .....
}
 
 
如何解析注解:java反射机制,通过字节码文件获取方法上的注解
Class c=Class.forName("类的全限定名");
Method[] ms=c.getMethods();
for(Method m:ms){
    //判断此方法上是否有Desc注解
    boolean isExist=m.isAnnotationPresent(Desc.class);
     if(isExist){
              Desc d=(Desc) m.getAnnotation(Desc.class);
              System.out.println(d.value());
}
}
posted @ 2017-03-23 21:17  bili111  阅读(188)  评论(0编辑  收藏  举报