浅谈java注解

这篇文章来浅谈一下java的注解,这平时Java开发中或多或少的接触过Java注解,例如@Override,它表示的就是一个方法重写的注解,下面为了更加方便的理解注解,举个简单的例子。

1.认识注解

注解就像你看书时候作笔记时划的线一样,它本并没有什么意义,但是结合Java的反射机制后才具有意义,在代码运行中就会比较关注你这标记注解的地方,结合Java的反射机制就可以实现很多的操作,就像你考试前的时候来复习划线的重点一样。
下面看一下@Override注解时怎么定义的。
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

这个注解本身并没有什么意义,但是但你使用注解标记方法时,在编译期间会扫描你注解标记的这个方法是否存在与你的父类中,如果不存在编译器就会报错。

2.元注解

什么时元注解呢?元注解就来用来修饰注解的注解,例如在前面我们看到的@Override注解中的@Target和@Retention都属于元注解,用来表示这个注解的作用目标和生命周期,下面来介绍一下Java的六个元注解。

元注解作用
@Target表示该注解可以用于什么地方,常用的ElementType参数有TYPE 类,接口或枚举声明;FIELD字段声明;METHOD方法声明;PARAMETER形式参数声明;CONSTRUCTOR构造函数声明;LOCAL_VARIABLE局部变量声明;ANNOTATION_TYPE注释类型声明;PACKAGE包声明;TYPE_PARAMETER类型参数声明;TYPE_USE任意类型声明;MODULE模块声明;
@Retention表示该注解的生命周期,常用的RetentionPolicy参数有SOURCE生命周期为编译期间,编译完成后注解失效;CLASS注解通过编译期间并且保留到class文件中,但是JVM加载class文件之后失效;RUNTIME生命周期持续到jvm加载到class文件之后仍在存在。
@Documented作用在通过Javadoc生成文档时有该注解
@Inherited表示该注解可以被继承
@Repeatable表示可以在同一地方多次使用该注解
@Native用来修饰成员变量,表示该变量可以被本地代码应用,常常被代码生成工具使用

3.Java自带的一些注解

  1. @Deprecated 该注解可以用于标记字段、方法、包、形参,接口枚举等已经过时,当你调用了该注解表的的方法或者属性,中间就会有条划线,表示该方法已经过时。
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, MODULE, PARAMETER, TYPE})
public @interface Deprecated {

}
  1. @Override表示继承并重写父类的方法。
  2. @SupperessWarnings阻止编译器的某些警告
  3. @SafeVarargs用于标注构造函数和方法表示这些都是安全的,编译器就不会报uncheck的警告。

总结:Java注解主要起标志的作用,适合添加一个注解可以让程序可读性更高,同时通过反射与注解的配合可以实现很多的功能,在spring和mybatis中就有大量的注解,通过注解可以省去大量的xml配置文件,使程序更加简洁。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值