5.注解

作者: 峰子1994 | 来源:发表于2017-08-08 12:08 被阅读6次
1.注解的概念
Annotation
注解:给程序带上一些标记,从而影响编译器运行程序的结果!!!
注释:提高程序的可读性,对程序运行没有影响!!!
注解的作用:
    1)可以在程序上(类,方法,属性)携带信息
    2)注解简化(取代)配置文件(xml或properties)
每个框架都有两种方案:
    1)把参数放在xml文件中
        2)把参数放在注解中
2.常见的注解
/**
 * 1)告诉编译器强制对方法进行覆盖
 */
    @Override
    public String toString() {
        return super.toString();
    }
    /**
     * 2)告诉编译器压制代码中出现的警告
     * @return
     */
    @SuppressWarnings(value = { "unchecked" })
    public List save(){
        List list = new ArrayList();
        return list;
    }
    /**
     * 3)在运行时让方法提示过期
     */
    @Deprecated
    public void update(){
    }
3.定义注解语法
public @interface Author {
}
4.带有属性的注解
public @interface Author {
    //声明属性
    String name();
    String modifyTime();
}
5.注解注意的细节:
5.2 注解细节
    1)属性的类型可以基本数据类型。也可以是数组类型
    2)使用default关键子给注解一个默认值
    3)当注解中使用value名称的属性,则可以省略“value=”不写      
public @interface Author {

    //声明属性
    String name();
    String modifyTime() default "2015-06-25";//给属性带上默认值
    String[] address();//带有数组类型的属性
    //如果注解的属性名称为value,那么在使用注解的时候可以不写value=
    String[] value();
    //String[] names();
    //String value();
}
5.元注解的概念(在注解里面在加上注解)
5.3 元注解
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
声明注解的使用范围.
TYPE: 注解可以用在类上
FIELD:注解可以用在属性上
METHOD:用在方法上
PARAMETER:用在参数声明上面
CONSTRUCTOR:用在构造方法上面
LOCAL_VARIABLE:用在本地变量上面

@Retention(RetentionPolicy.SOURCE)
声明注解的有效范围
RetentionPolicy.SOURCE: 该注解只在源码中有效!
RetentionPolicy.CLASS:  该注解在源码中,和字节码中有效!(默认)
RetentionPolicy.RUNTIME: 该注解在源码中,和字节码中有效,运行字节码的时候有效!
6.反射注解
使用反射技术获取(类,方法,属性)注解的信息
//1)得到save方法对象
Method m = this.getClass().getMethod("save", null);
//2)得到方法上面的注解
Author author = m.getAnnotation(Author.class);
System.out.println(author);
//3)获取注解里面的属性(数据)
String name = author.name();
String time = author.modifyTime();
System.out.println(name);
System.out.println(time);
7.反射注解的案例(重点)
改造泛型DAO的案例:
问题: 当具体的实体类对象的属性和表的字段不一致时,BaseDao就无法使用了!!这时需要使用注解绑定类和表名,属性和字段的关系。改造后的实体对象如下
8.反射注解的实现代码
/**
 * 表的注解
 * @author APPle
 *
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Table {
    String name();//数据的表名
}

/**
 * 字段的注解
 * @author APPle
 *
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Column {
    String name();//字段名称
}


@Table(name = "teacher_list")
public class Teacher {
    
    @Column(name = "tid")
    private int id;
    
    @Column(name = "tname")
    private String name;
    
    @Column(name = "tage")
    private int age;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Teacher [age=" + age + ", id=" + id + ", name=" + name + "]";
    }
}

相关文章

  • 5.注解

    1.注解的概念 2.常见的注解 3.定义注解语法 4.带有属性的注解 5.注解注意的细节: 5.元注解的概念(在注...

  • Hibernate学习笔记(四) 注解

    目录 1.注解步骤2.类的注解3.属性的注解4.关系的注解5.注解与XML 一、注解步骤 以实体类Product为...

  • springboot项目注解限制接口访问次数

    1.导包 2.定义注解 3.自定义aop切面 4.接口添加注解 5.测试接口

  • Spring boot 基于注解 正则数据脱敏

    1.首先创建注解类 2.创建注解检查 转换类 3.创建数据脱敏基类 4.注解参数以及默认处理类 5.实现基类,自定...

  • day36 Spring4_day02

    1. 注解相关内容 转自孤傲苍狼的博客 2.使用注解 3. 了解编程范式 4. AOP 5. 设计模式 6.切入点...

  • 自定义注解加AOP统计方法时长

    1.自定义注解 2.切面类 3.使用 4.最终将数据落地,存入数据库 5.建表语句

  • 通过redis实现10秒内访问2次

    1. 定义注解 2. 添加面向切面的处理拦截器 3. IP获取工具类 4. Redis常量类 5. 在控制层的接口...

  • 注解学习笔记

    什么是注解注解分类注解作用分类 元注解 Java内置注解 自定义注解自定义注解实现及使用编译时注解注解处理器注解处...

  • 注解与反射

    注解 声明一个注解类型 元注解 在定义注解时,注解类也能够使用其他的注解声明。对注解类型进行注解的注解类,我们称之...

  • 1.8 Java 注解annotation

    1.1 注解声明 Java注解Annotation,有声明注解和元注解 元注解:Java提供的元注解,所谓元注解就...

网友评论

      本文标题:5.注解

      本文链接:https://www.haomeiwen.com/subject/nprtrxtx.html