玩转Java注解:元注解、内置注解、自定义注解的原理和实现

}

}

class testDeprecated {

@Deprecated

public static String toString1(){

return “我是重新定义过的toString方法”;

}

}

注意点:这个不是报错,只是警告,提醒我们这个方法可能会有问题,可能有更好的方法来实现!

3、@SuppressWarnings 忽略警告

概念:指示编译器去忽略注解中声明的警告。

平时开发中,我们会遇到这样的情况,如下图:

这也不是错误,这是提醒我们,该方法没有使用到,警告提醒的作用。加上@SuppressWarnings注解后。

public class Annotation1 extends Object{

public static void main(String[] args) {

}

@SuppressWarnings(“all”)

public static void testSuppressWarnings(){

System.out.println(“测试+testSuppressWarnings忽略警告!”);

}

}

方法成功高亮起来,并且没有警告提示了!

我们可以点进去看下这个注解为什么需要参数?

看这里,这个不是方法哦,这是参数。

在注解中的参数格式:calss + 参数名 + ()!这个需要强行记忆哦,回头我们自定义注解时也需要用到。换一种写法加深理解!如下图:

注意点:当注解中只有一个参数时,我们无需加上参数名,注解会自动帮我们匹配的。

二、元注解


概念:顾名思义,元注解就是给注解使用的注解!

1、@Retention 作用域-(常用)

概念:表示在什么级别保存该注解信息。在实际开发中,我们一般都写RUNTIME,除非项目有特殊需求!我们看下@Retention的源码。

可以看到,需要一个参数,进参数瞅瞅。

  • SOURCE:源代码时有用。

  • CLASS:class文件中有用,但会被jvm丢弃。

  • RUNTIME:运行时有用。

  • 关系:RUNTIME>CLASS>SOURCE

后面我们自定义注解时,每个都需要用该注解!

2、@Documented 作用文档

概念:将此注解包含在 javadoc 中 ,它代表着此注解会被javadoc工具提取成文档。

老规矩看下源码:

无参的注解,作用域为RetentionPolicy.RUNTIME,运行时有用!这个只是用来作为标记,了解即可,在实际运行后会将该注解写入javadoc中,方便查看。

3、@Target 目标-(常用)

概念:标记这个注解应该是使用在哪种 Java 成员上面!

参数源码:

注意这里是数组格式的参数,证明可以传多个值。

  • @Target(ElementType.TYPE)——接口、类、枚举、注解

  • @Target(ElementType.FIELD)——字段、枚举的常量

  • @Target(ElementType.METHOD)——方法

  • @Target(ElementType.PARAMETER)——方法参数

  • @Target(ElementType.CONSTRUCTOR) ——构造函数

  • @Target(ElementType.LOCAL_VARIABLE)——局部变量

  • @Target(ElementType.ANNOTATION_TYPE)——注解

  • @Target(ElementType.PACKAGE)——包

我们来试一下:

目标不对会报错的哦!我们将其改成方法上!编译即正常通过。

其他的作用域大家可以去自行尝试,篇幅问题,无法做到每个都去试一遍!

4、@Inherited 继承

概念:标记这个注解是继承于哪个注解类(默认 注解并没有继承于任何子类)。

这个很简单,就是当@InheritedAnno注解加在某个类A上时,假如类B继承了A,则B也会带上该注解。

5、新注解-(了解即可)

从 Java 7 开始,额外添加了 3 个注解:

最后

这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。

image

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!

注解:

最后

这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。

[外链图片转存中…(img-OXX2kelL-1714759451013)]

整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断!!!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 47
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java自定义注解是指在Java语言中可以通过编写代码来定义自己的注解自定义注解可以提供一些额外的数据信息,用于标记和描述Java代码中的某个素。自定义注解可以用于类、方法、属性等各个层面。 实现自定义注解步骤如下: 1. 使用@Retention注解指定注解的保留策略,默认为RetentionPolicy.CLASS。可选的保留策略有三种:RetentionPolicy.SOURCE、RetentionPolicy.CLASS和RetentionPolicy.RUNTIME。 2. 使用@Target注解指定注解的作用目标,默认可以用于所有的Java素。可选的作用目标包括ElementType.TYPE(类、接口、枚举等)、ElementType.FIELD(字段、枚举常量等)、ElementType.METHOD(方法)、ElementType.PARAMETER(方法参数)、ElementType.CONSTRUCTOR(构造方法)、ElementType.LOCAL_VARIABLE(局部变量)等。 3. 使用@interface关键字定义注解,并定义注解的属性。注解的属性以无参无异常抛出的方法的形式定义,可以指定默认值。 4. 在需要使用注解的地方使用自定义注解自定义注解可以携带信息,这些信息可以在运行时通过反射获取,对注解进行解析和处理。自定义注解可以用于编写各种工具、框架和库,来增强程序的扩展性和灵活性。 实现自定义注解的一个典型应用场景是在Spring框架中的依赖注入(DI)和面向切面编程(AOP)中。通过自定义注解,可以标记需要注入的Bean,或者标记需要进行切面拦截的方法,从而实现依赖注入和切面编程的功能。 总的来说,Java自定义注解Java语言提供的一种灵活的编程机制,可以通过注解增加程序的可读性和可维护性,同时也可以用于实现一些特定的功能,如依赖注入和切面编程等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值