Java注解+元注解+内置注解+自定义注解

什么是注解

注解即Annotation,Java从JDK5.0开始引入
Annotation作用:
其一:不是程序本身,可以对程序作出解释(这一点和comment(注释)没什么区别)
其二:不同于注释的是,他可以被其他程序(如:编译器)读取
Annotation格式:
注解是以“@注解名”在代码中存在的,如:
在这里插入图片描述就这种我们程序中非常常见的玩意就是注解,这里的注解就是重写的注解,因为上面的几个方法都是重写的
有的时候注解还需要传入一些参数值,类似于有参函数
Annotation可在哪使用?
可用在包(package)、class、method(方法)、field上面
如上面图片那里的就是用在方法上的注解

注解有内置注解和自定义注解,内置注解是由程序内部定义的,我们可以直接使用,根据需要我们可以自定义注解

几个常用内置注解的举例

  1. @Override
    位于java.lang.Override中
    此注解用于方法上,表示此方法是重写其他类的方法的,比如我们重写toString的时候就会出现这个玩意
    注意,重写一定要保证遵守重写的几大要素,如果程序不认为你是重写了这个方法,则用@Override注解,则会报错
  2. Deprecated
    位于java.lang.Deprecated中
    这个注解可以用于方法,属性,类,这个玩意就表示他修饰的东西算是弃用的东西,不推荐程序员使用
  3. @SuppressWarnings
    位于java.lang.SuppressWarnings中
    用于一直编译时的警告信息,如图:
    在这里插入图片描述
    在我们没有用这个注解的时候,可以看到这个类的类名是灰色的,就是因为我们没有调用它,这算是一种警告
    然后:在这里插入图片描述
    用上这个玩意,颜色就变黑色了,就等于说抑制了警告的提示
    这个玩意需要传入一个参数
    上文我们传入了一个all参数,代表抑制所有的警告,这个暂时不用多做了解

元注解

作用:
用于负责注解其他的注解,Java定义了4个标准的meta-annotation类型(元注解),他们被用来提供对其他注解类型作说明
位置:
位于java.lang.annotation中
分别是:

  1. @Target
    用于描述注解的使用范围(即,注解可以用在哪些地方)
  2. @Retention
    用于表示需要在什么级别保存改注释信息,用于描述注解的生命周期(即,注解在什么时候有效,在什么时候还存在)
    (RetentionPolicy.SOURCE(源代码时候)<RetentionPolicy.CLASS(源码编译为class文件的时候)<RetentionPolicy.RUNTIME(运行的时候))
    有三个级别,如上,更高级的可以运行在更低级的上面,反之不行,一般我们都定义为RetentionPolicy.RUNTIME
    如镇压警告的注解:在这里插入图片描述红笔注出来的第一行,即表示注解适用于哪些地方,括号中传入的是参数,这里是一个数组。第二行即表示他的效果范围,因为镇压警告只需要用于源码的地方,所以,只需要参数RetentionPolicy.SOURCE就行
    注意,最下面的那个String[] value()表示为此注解定义了一个String数组类型的形参,这里和Java谱图代码中不同,这里value()即表示定义一个名叫value的形参
  3. @Document
    说明该注解将被包含在javadoc中
  4. @Inherited
    说明子类可以继承父类中的该注解

自定义注解

  1. 使用@interface关键字,格式public @interface 注解名{定义内容},public不是必要的,在某些时候不能加public
    如:在这里插入图片描述
    这种时候,一个类里面不能有两个public,所以这里报错了,所以这里定义的注解不能加public
  2. 其次,参数问题
    在这里插入图片描述注意注解中的这个地方,像这样的都是参数,可以叫value,也可以为其他名字
    但是!!!这里面有个不成文的规定,正常来说,调用注解向里面传参数的话,需要这样:
    在这里插入图片描述
    即括号中写入形参名=实参,但是,如果你的形参叫value则,不需要写这个形参,直接向里面传就行
  3. 可以通过default来声明参数的默认值
    如果我们调用带有参数且没有默认值的注解,又不向里面传入参数,则程序会报错,但是如果我们此注解具有默认值,则传参数就不是必须的了
    尝试:在这里插入图片描述如图
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值