5.注解

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 + "]";
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,870评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,638评论 18 139
  • 长这么大,最喜欢的事情就是坐在汽车上戴着耳机坐在靠窗的位置听着悠悠的旋律伴着此情此景的心情去感受我心里出现的画...
    楓樂spring阅读 526评论 0 2
  • 1 你曾是如风的少年 我曾是如花的姑娘 风吹花落落花随风今非昨 2 我精心设计了一款寻宝游戏 你循着指令找了大半个...
    Crazy麻麻阅读 393评论 12 15