java注解和分类

base

  • Java Annotation, Java 注解
  • JDK5.0 开始引入的一种注释机制。
  • 注解可以用在类、接口,方法、变量、参数以及包等之上。
  • 注解可以设置存在于不同的生命周期中,例如 SOURCE(源码中),CLASS(默认),RUNTIME(运行期中)
  • 有内置注解,也有自定义注解

作用

  • 作为辅助信息: 可以对程序做出一些解释,如 @Override 注解作用于方法上,表示此方法是重写了父类的方法。
  • 被他程序读取: 例如编译器会对被 @Override 注解的方法检测判断方法名和参数等是否与父类相同,否则会编译报错;而且在运行期可以通过反射机制访问某些注解信息。

内置注解

  • Java 中有 10 个内置注解
  • 6 个注解是作用在代码上的
  • 4 个注解是负责注解其他注解,也就是元注解

内置注解

  • @Override 重写
  • @Deprecated 指这段代码过时了
  • @SuppressWarning(“all”) 抑制编译时候的警告信息,需要一个参数

自定义注解

  • 使用 @interface 声明自定义注解
  • 格式: public @interface 注解名 {定义内容}
  • 使用 @interface 时,就自动继承了 java.lang.annotation.Annotation 接口

元注解: 用于自定义注解

  • @Target 描述注解使用范围
  • @Retention 描述注解生命周期 SOURCE(源码中标记了运行时才有效果) < CLASS < RUNTIME
  • @Document 描述注解是否被抽取到api文档中。
  • @Inherited 说明子类可以继承父类中的该注解

@target中ElementType取值

  • ElementType.TYPE,可以作用于类上
  • ElementType.METHOD,可以作用于方法上
  • ElementType.FIELD,可以作用在成员变量上
// 【2. 使用自定义注解】
class Person{
    @MyAnno(name="lcg",id = 1,schools = {"bjtu","cn"})
    public void say(){
    }
}
// 【1. 定义自定义注解】
//target,指明注解的作用域(此处指明的是在类和方法上起作用)
@Target(value = {ElementType.METHOD,ElementType.TYPE})
//retention 声明该注解在何时起作用(此处指明的是在运行时起作用)
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnno{
    //注解中需声明参数,格式为:参数类型 + 参数名();
    String name() default "xixi";
    int id() default -1;
    String[] schools();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值