Java --Annotation学习心得体会及笔记
来源:互联网 发布:淘宝网折叠床 编辑:程序博客网 时间:2024/06/06 00:44
相对于注释这种给程序员看的信息;
注解,就是给程序看的解释性的语言,其作用就相当于配置文件的存在。其存在的意义在于以下几点:
优点:
方便的使程序员看到相关项的关联位置及关联方式等信息。
缺点:由于注解是存在于程序之上的,所以每次对注解进行修改后就必须要对源代码进行重新编译才会生效。
注解都长什么样呢?
在使用Eclipse编程的时候我们会经常看到下面几种:
- @Override——覆盖父类的方法
- @SupportWarning——抑制警告
- @Deprecated——过时的
大致的使用方法,我从网上download下来一幅图片,基本上可以讲述这些常用的注解的作用及使用方式。如下:
。
但是光有自带的这些注解可是远远不够滴。我们还需要开发出自定义的实现相关需求的注解。这样才能应付复杂的实际的开发环境。
怎么开发自定义注解?
开发一个自定义注解并不是很复杂,只要按照一定的约束和规范,就可以实现自定义的注解的开发。实现的步骤如下:
- 使用@interface关键字修饰注解名称
- 声明符合要求的属性及字段
- 使用元注解对自定义的注解进行约束和规范(尤其需要使用@Retention,来约束自定义注解的有效的Scope,一般是RetentionPolicy.RUNTIME这样我们才可以在代码编译完成及运行的时候捕捉到注解上面存在的数据信息)。
对于元注解一般有如下的几个:
- @Retention:可以通俗的理解为注解持有的域的范围
- @Target:理解为注解存在的位置
- @Document:加上这个注解的注解就会被收录到Javadoc工具上
- @Inherited:加上这个注解就会使得自定义的注解可以被继承
上面的元注解中最为常用也最为重要的是@Retention和@Target两个圆元注解,同样在网上下载了一张图,可以很好地解释相关项的含义及作用。
使用注解开发出一个数据库连接小助手注解
首先我们需要明白的是数据库连接需要的是驱动,资源定位,用户名和密码四个“属性”,所以我们的自定义注解就需要有这四个属性。如下:
package annotation;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;//这里是最为关键的一点,尤其需要注意注解的存在域的范围@Retention(RetentionPolicy.RUNTIME)public @interface JdbcAnnotation { String driver(); String url(); String username(); String password();}
然后我们就可以在程序中引用自定义的注解了。如下:
package annotation;import java.lang.reflect.Method;import java.sql.Connection;import org.junit.Test;public class JDBCUtils { @JdbcAnnotation(driver="com.mysql.jdbc.Driver",url="jdbc:mysql://localhost:3306/myDb",username="root",password="mysql") public static Connection getConnection() throws Exception { Method method = JDBCUtils.class.getDeclaredMethod("getConnection", null); JdbcAnnotation ja = method.getAnnotation(JdbcAnnotation.class); String driver = ja.driver(); String url = ja.url(); String username = ja.username(); String password = ja.password(); System.out.println("数据库连接驱动:"+driver); System.out.println("数据库连接资源定位:"+url); System.out.println("数据库连接用户名:"+username); System.out.println("数据库连接密码:"+password); return null; } @Test public void test() throws Exception { getConnection(); }}
实现的原理是:使用反射技术,获取注解信息,然后解析注解的内容并用相关的变量进行保存,然后就可以被其他的代码得到运用。比如调用实际开发中的数据库连接帮助类的相关方法,实现相关的业务逻辑。在这里仅仅是为了显示可以从注解上获得我们想要的信息,即可。
程序的运行结果如下所示:
数据库连接驱动:com.mysql.jdbc.Driver数据库连接资源定位:jdbc:mysql://localhost:3306/myDb数据库连接用户名:root数据库连接密码:mysql
总结
使用自定义的注解技术,我们可以简化开发过程中来回切换任务,也可以较好的对代码进行相关项的维护,方便的处理业务逻辑。但是不容置疑的是其做完修改后要对源代码进行编译,这在一定程度上限制了注解的使用。
- Java --Annotation学习心得体会及笔记
- java学习心得体会
- java学习心得体会
- java 学习心得体会(二)
- java 学习心得体会(一)
- Java学习心得体会。
- uCOS/ii 学习心得及体会
- java web 开发学习心得体会
- 学习心得体会
- 学习心得体会
- 学习心得体会
- 学习心得体会
- 黑马程序员—4—Java基础: 面向对象继承学习笔记和学习心得体会
- 黑马程序员—5—Java基础:多态学习笔记和学习心得体会
- 黑马程序员—7—Java基础:有关异常学习笔记和学习心得体会
- 黑马程序员—8—Java基础:有关包的学习笔记和学习心得和体会
- 黑马程序员—9—Java基础:有关多线程的学习笔记和学习心得体会
- 黑马程序员—10—java基础:有关多线程安全的学习笔记和学习心得体会
- leetcode(168) Excel Sheet Column Title
- Linux下安装php-soap通过重新编译php过程
- 关于51单片机学习中计数器/定时器中断的理解
- linux下的find文件查找命令与grep文件内容查找命令
- Machine Learning - Linear Regression with One Variable
- Java --Annotation学习心得体会及笔记
- eclipse安装maven插件,创建Android工程
- 前端基础笔记HTML&CSS&JS
- 内部类
- C++对象的动态建立和释放
- Linux文件权限与目录总结
- 第11讲项目3——如何买玫瑰?
- 习题10-3 UVA 1643 Angle and Squares 角度和正方形
- 260. Single Number III LeetCode