java注解 源码_关于JAVA中源码级注解的编写及使用

一、注解简介:

1.1.什么是“注解”:

​在我们编写代码时,一定看到过这样的代码:

class Student {

private String name;

@Override

public String toString(String str) {//编译错误!

return "Student name = " + name;

}

}

​其中的@Override,就是一个“注解”,@Override一般出现在重写equals()或者toString()方法的上边,意思是告诉编译器:下边的代码是重写父类方法的。这时编译器会按照“重写”的语法严格检查下面的方法,如果不符合重写语法,将会编译错误。

​"注解"作为一种“标记”,被写在源码中,不会改变程序的执行流程。它通常由“注解解析工具”来解析,而“注解解析器”可以随Java编译器启动,也可以独立启动,来解析注解,并以此可以做一些事情。

1.2.注解的分类:

源码注解:

​注解只在源码中,编译成class文件后就不存在了。

编译时注解:

​注解在源码和.class文件中都存在(如:JDK内置系统注解)

运行时注解:

​在运行阶段还起作用,甚至会影响运行逻辑的注解(如:JUnit的@Test)

1.3.注解的作用

​注解的作用非常广泛,注解可以被用在类、属性、构造方法、成员方法、局部变量等位置,用于对这些元素进行说明。由“注解解析工具”解析后,可以生成文档、进行代码分析、编译检查等。

​本例将会实现一个用作"编译检查“的注解,以及一个"注解解析器"。"注解解析器"将会随着javac编译器一同启动来对使用了注解的类进行编译,并检查类名、字段名、方法名是否以大写、小写字符开头,如果违反了规则,编译时将会报错。

二、自定义注解:

2.1.定义注解的基本语法

​“注解”本质上是一个“类”,我们可以根据自己的需要定义自己的注解。

​定义注解的语法很简单:

public @interface CheckWord{

...

}

​"注解”编译后会生成.class文件。但这是一个非常简单的注解,它可以被用在任何位置,而且编译器遇到这种注解也不做任何事情。例如:

@CheckWord

public class Student {

@CheckWord

public Student() {

}

@CheckWord

private String name;

@CheckWord

public void study() {

}

}

下面我们先使用“元注解”来规定这个注解可以被用在哪里。

2.2.元注解

​“元注解”也是一种“注解”,它是已经实现好的。必须用在“注解”的定义上,它可以规定注解可以用在哪里,以及可以存在于源码中,或者class中,或者运行时。

​常用的“元注解”有两个:

​1).@Target : 规定注解可以用在哪里。常用的取值被定义在枚举java.lang.annotation.ElementType中:

​ElementType.TYPE:类和接口上

​ElementType.FIELD: 用在成员变量上

​ElementType.METHOD: 用在方法上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值