Java注解(一) 基本概念

写作动机

在日常的开发中,有许多地方都需要用到注解(比如@Override@Deprecated等),然后有人提到数据库关系映射(ORM)中使用注解效率会比较低。带着一些问题跟一些兴趣,决定对注解做一些了解性的学习。

这篇文章会介绍注解的基本概念,下一篇文章会介绍Java中的系统注解的使用方法,然后会有一篇文章讲解如何自定义注解跟提解注解中的值,最后会有一个简单的ORM实现原理介绍。也就是说会有几篇文章来介绍Java注解相关的知识。


概要

  • 基本概念
    • 注解作用
    • 注解目的
  • 可注解元素

注解作用

为数据提供元数据。
元数据:描述数据的数据,对数据及信息资源的描述性信息。

示例代码:

public class User extends BaseEntity{
    @Column("id")
    private String id = "123456";
}

比如上面的 User类 中的 id属性, 如果不加注解 @Column("id") ,那么它代表的仅仅的就是一个简单的类属性。

但这里 @Column("id") 注解给id加上了描述信息(id是数据库表中的列,列名为id),所以通过反射得到该属性的时候就知道该属性的描述信息(也就是知道它是代表数据库中的列,列名为id),然后就可以执行相应的数据库操作了。

所以说,注解的作用是为数据提供元数据(描述数据的数据)。

注解目的

注解也是有可见阶段的(编译时可见、构建时可见、运行时可见),所以不同阶段可见的注解有不同的目的,下面就简单介绍这三种注解。

编译时可见的注解可以用作编译时指令

比如 @Deprecated (用于声明方法或类已经过时),编译器就会检查该注解然后给出相应提示,具体看下面代码(使用IntelliJ IDE)。

User.java

public class User extends BaseEntity{
@Column("id")
private String id = "123456";

/**
 * 测试 @Deprecated 注解
 */
@Deprecated
public String deprecatedMethod(){
    return "I am deprecatedMethod";
}
}

Test.java

使用IDE 为 IntelliJ

上面的代码中,deprecatedMethod方法就是被@Deprecated(编译时可见注解,标示已过时)注解的方法。
当调用该方法时,编译器就会检测到deprecatedMethod@Deprecated注解了,然后就会做一些提示操作(比如画横线)。

构建时可见的注解可以用作构建时指令

构建工具检测相关的注解并做相关的操作这方面知识不熟悉,没找到相关例子,如果您对这方面有比较好的理解可以跟我讨论。

运行时可见的注解可以用作运行时指令

运行时可见的注解可以通过反射机制获取到,一些ORM框架就是通过注解来实现数据库的一些操作的(后面会有具体的讲解,此处略)。

可注解元素

  1. 所有基本类型(int、float、long等)
  2. String
  3. Class
  4. enum
  5. Annotation
  6. 以及以上类型组成的数组

总结

本篇文章主要介绍了注解是什么,注解有什么作用,跟注解可以使用的元素。现在大家对注解有了一个比较基本的概念了解,后面还会有深入的注解知识学习。

思路脑图

Java注解基本概念

完整的思维导图可以在我的github上面查找,如果觉得不错也可以给个star,地址为https://github.com/liujiescut/AndroidKnowledge

下一篇文章将介绍 Java中的系统注解的使用方法

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值