您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

浅谈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配置文件,使程序更加简洁。


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进