博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java注解
阅读量:4537 次
发布时间:2019-06-08

本文共 2881 字,大约阅读时间需要 9 分钟。

一:概念

注解

   在jdk5之后提供一个特性,和类、接口同级。

  格式:@interface 注解名()

  作用:

    1、编译检查

    2、替代配置文件

    3、定义注解(元注解:注解上的注解。)

java中三个注解

  @override:声明该方法是从父类继承过来的,执行编译期检查。

  @suppressWarning:抑制警告,值有好多,只需要知道一个all。 抑制所有警告。

  @ Deprecated:声明 该方法不赞成使用。

自定义注解:

    注解属性:

      注解属性本质是一个接口,接口中可以有常量和抽象方法。

      抽象方法在注解中就称之为注解属性。

      注意:在接口中抽象方法可以省略public abstract

     注解类型:

      1、String  

      2、Class

      3、Annotation

      4、Enum:枚举

      5、以上类型的对应的一维数组。

      注意:

        一旦注解有属性了,使用注解的时候必须赋值,(除非这个注解属性有默认值)

      赋值格式:

        @注解名(属性名=属性值,属性名=属性值....)

        若注解类型为数组,且只有一个值的时候,可以有两种写法:

          1、属性名={属性值}

          2、属性名=属性值

        若属性名为value的时候,且只需要为这个value属性赋值的时候,vlue可以省略。

元注解:

    定义在注解上的注解:

      @Retention 规定注解保留什么阶段,值为RetentionPolicy的三个枚举值

        SOURCE:只在代码中保留,在字节码中删除。

        CLASS:在代码和字节码中保留。

        RUNTIME:在所有阶段中保留。

      @Target 规定注解作用在什么上面,值为:ElementType的枚举值。

          TYPE:邹勇在类、接口等上面

          METHOD:作用在方法上。

          FIELD :作用在字段上面。

扩展案例:

   之前写jdbc工具类,我们是通过xml文件和properties文件来定义我们的配置文件。这次我们通过注解方式来定义我们的配置文件。

需求分析:

  1、自定义注解,需要注明该注解的知识修饰方法。该注解需要有四个属性,分别为:url  driverclass   username password 我们可以给driverclass设置default值。

  2、工具类中的获取连接的方法(getConnection)。需要:1)需要判断getConnection方法是否含有我们自定注解-->需要获取修饰的方法(getConnection 反射)-->获取字节码。

自定义注解:

1 package jd.com.an; 2  3  4 import java.lang.annotation.ElementType; 5 import java.lang.annotation.Retention; 6 import java.lang.annotation.RetentionPolicy; 7 import java.lang.annotation.Target; 8  9 10 @Target(ElementType.METHOD)11 @Retention(RetentionPolicy.RUNTIME)12 public @interface JdbcInfo {13     String driverclass()default "com.mysql.jdbc.Driver";14     String url() default "jdbc:mysql://192.168.147.145:3306";15     String user();16     String password();17 }

 

工具类:

1 package jd.com.an; 2  3  4 import java.lang.reflect.Method; 5 import java.sql.Connection; 6  7 import java.sql.DriverManager; 8  9 10 public class JdbcUtils {11 12 13     private static  Connection con;14 15     public static void  main(String... args)throws  Exception{16         getConnection();17     }18 19     @JdbcInfo(user = "admin",password = "123456")20     public static Connection getConnection()throws  Exception{21         //1、获取字节对象。22         Class clazz=JdbcUtils.class;23         //2、获取方法24         Method method=clazz.getMethod("getConnection");25         //3、判断注解26         if (method.isAnnotationPresent(JdbcInfo.class)){27             JdbcInfo jdbcInfo=method.getAnnotation(JdbcInfo.class);28             String url=jdbcInfo.url();29             String user=jdbcInfo.user();30             String password=jdbcInfo.password();31             String driverclass=jdbcInfo.driverclass();32             Class.forName(driverclass);33             con= DriverManager.getConnection(url,user,password);34             System.out.println(con);35 36         }37         return con;38     }39 40 }

 

转载于:https://www.cnblogs.com/evilliu/p/8708013.html

你可能感兴趣的文章
10.9做的一个静态页面(巩固前面的内容)
查看>>
幸运男孩--点的hash
查看>>
大数的减法------神秘数
查看>>
洛谷P1658 购物
查看>>
Using Perl in Oracle 11gR2 Database
查看>>
Rabel 1.3.9 发布,让论坛回归交流本质
查看>>
Mac 安装brew和安装composer
查看>>
不用系统函数将字符串转换成整型【Java算法】
查看>>
Nginx限速遇到的问题
查看>>
判断当前主机是不是阿里云内网
查看>>
Java疯狂讲义(二)
查看>>
简简单单安装debian桌面工作环境
查看>>
ORACLE 11g EXPDP 的停止、启动和监控
查看>>
qmake常用语法二
查看>>
HBuilder更换部分
查看>>
2012软工感言
查看>>
ubuntu 16.04 C我语言开发环境搭建
查看>>
ubuntu下配置lamp环境遇到 Unable to locate package错误解决办法
查看>>
坐在马桶上看算法:快速排序【转】
查看>>
并查集详解 (转)
查看>>