• java注解


    一:概念

    注解

       在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 }
  • 相关阅读:
    第八次作业
    第七次作业2
    jsp第十一次作业
    jsp第十次作业
    jsp第九次作业
    jsp第八次作业
    jsp第七次作业
    jsp第六次作业
    软件测试第二次作业
    jsp第五次作业
  • 原文地址:https://www.cnblogs.com/evilliu/p/8708013.html
Copyright © 2020-2023  润新知