全面解析JAVA注解
全面解析java注解:
1. 先给个注解例子,下面箭头标出的即是java注解:
java注解2. 在看这篇文章之前,你肯定心里有疑问, 为什么要学习注解? 注解有什么用? 学完注解又有什么用呢?
1.能够读懂别人写的代码,特别是框架相关的代码
2.让编程更加简洁,代码更加清晰
3.让别人高看我们一眼,证明自己学过Spring,学过Mybatis等,尤其是会自定义注解
3. java注解的概念:
java提供了一种原程序中的元素关联任何信息和任何源数据的途径和方法.
下面我们会从以下几个方面来详细介绍JAVA的注解:
1.java中的常见注解
2.注解分类
3.自定义注解
4.注解应用实践
1.java中的常见注解:
java中的常见注解我们做个案列来更清晰的了解下JDK自带注解:
新建一个Project项目AnnTest,新建一个Person接口:
public interface Person {
public String name();
public int age();
public void sing();
}
然后写一个类去实现Person接口:
public class Child implements Person {
@Override
public String name() {
return null;
}
@Override
public int age() {
return 0;
}
@Override
public void sing(){
}
}
我们发现,所有的方法上面都加了一个@Override注解,其告诉我们和告诉编译器其下的方法是覆盖了Person里面的方法.所以以后我们要看到有@Override这个注解,我们就知道了这个方法是覆盖了父类中的方法.
但是,有时候我们可能会遇到这样一个问题,就是我们的子类中可能用不到父类中的所有方法,比如Person中有个sing()唱歌的方法,如果有个孩子不会唱歌,我们用不到这个方法该怎么办呢,这时候就需要用到@Deprecated,在sing()方法加上这个注解.
接下来我们再写一个测试类Test:
测试类Test相信你一定看到了,sing()方法被划上了,意思是这个方法已经过时了,但是我们又必须要用这个方法,该怎么办呢?其实我们在这个类上加上@SuppressWarnings("deprecation")就可以了.这个注解的意思就是要忽略这个过时的方法.
第三方注解
@Autowired: 它的作用是自动装配bean,可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作而无需再为field设置getter,setter方法.
@Service用于标注业务层组件.如果一个类带了@Service注解,将自动注册到Spring容器
@Repository用于标注数据访问组件,即DAO组件
其他的我就不一一举例说明了!
注解的分类:
一.
按运行机制分类源码注解:注解只在源码中存在,编译成.class文件就不存在了
编译时注解: 注解在源码和.class文件中都存在
运行时注解:在运行阶段还起作用,甚至会影响运行逻辑的注解
二.
按照来源划分三. 还有一种分类是元注解,元注解就是注解的注解
元注解自定义注解:
语法要求:
语法要求 语法要求使用自定义注解:
使用注解语法解析注解 :
解析注解概念比如我们要解析如下的两个注解:
解析这两个注解我们需要写一个ParseAnn类来解析:
解析然后运行:
运行结果我们刚才解析了类上面的注解,那方法上面的注解怎么解析得到呢?
解析方法上的注解注解的解析我已经给大家演示完了,现在还有一个问题,注解能不能继承呢?其实答案是可以的,那么问题又来了,注解到底是只能继承类上面的注解还是方法上面的注解,当然都是可以的。