java注解,@,注解有什么用?
@是Java注解,即annotation。
1可以理解为插件,是代码级别的插件,在类的方法上写:@XXX,就是在代码上插入了一个插件。
2Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。
注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用
3要先学习java的反射机制,然后再来理解java注解
5自定义注解:
java自定义注解
Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。 1、元注解 元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四种。
@Retention(RetentionPolicy.SOURCE)
//注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS)
// 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,
@Retention(RetentionPolicy.RUNTIME)
// 注解会在class字节码文件中存在,在运行时可以通过反射获取到
自定义的注解类:
|
6自定义注解有什么用?
这个例子很有代表性,读懂就明白了。
http://blog.youkuaiyun.com/tengdazhang770960436/article/details/37886361 本例子旨在使用自定义注解为实体打上标记,为自动生成 sql 提供依据,模拟 hibernate 的注解,至于注解的原理自己搜吧 1.定义 Table 注解
2.定义 Column 注解
3.定义使用注解的实体
4.测试注解
测试结果:
select * from tb_test where 1=1 and _id=123 and username=34 ========== 该例子解析: 1本例子是编写了一个简单的类似于hibernate的框架,框架的作用是,通过对象的操作的方式,替代写sql语句。 2本例用到了映射机制,什么是java映射?我理解就是:通过类的对象,获取该对象的类的相关信息。obj.getClass().getAnnotation(Table.class) 3注解起到配置文件的作用:
首先new了一个TestDto对象如testDto1,然后进入我的框架(说白了就是文中的assembleSqlFromObj方法)对testDto1进行处理,通过testDto1获取该对象的类即TestDto.Class,然后获取该类的名为“Table”的注解,获取注解类的成员变量(即value)的值,即“tb_test”。 |
总结:
1java的反射机制就是,通过类的对象,获取该对象的类的相关信息。类的相关信息包括:①用了什么注解 ②类的名称 ③各成员变量的名称等。
2什么时候用到注解?我们一般用不到自定义注解,我们平时别人开发好的框架如Hibernate、spring、Struts等时,只需要按照框架的规则在代码里定义注解即可,而不会在代码里调用和操作注解。只有在自己动手写类似于Hibernate框架的时候,会用到自定义注解。这也是为什么我们一般用不到java反射,因为只有在使用自定义注解的时候,才会用到java反射,而我们平时连自定义注解都用不到。