@TypeQualifierDefault

@TypeQualifierNickname @TypeQualifierNickname: This annotation is applied to a annotation, and marks the annotation as being a qualifier nickname. Applying a nickname annotation X to a element Y should be interpreted as ha... 阅读详情

@TypeQualifierDefault:
This qualifier is applied to an annotation to denote that the annotation defines a default type qualifier that is visible within the scope of the element it is applied to.

@Documented
@Target(value=ANNOTATION_TYPE)
@Retention(value=RUNTIME)
public @interface TypeQualifierDefault

@TypeQualifierDefault 用于标注注解,它有一个或多个ElementType参数:

  • ElementType.METHOD 用于方法的返回值;
  • ElementType.PARAMETER 用于值参数;
  • ElementType.FIELD 用于字段;以及
  • ElementType.TYPE_USE(自 1.1.60 起)适用于任何类型,包括类型参数、类型参数的上界与通配符类型。

@TypeQualifierDefault 一般和 @Nonnull 一起使用来标注一个注解,例如:

@Nonnull
@TypeQualifierDefault({ElementType.METHOD, ElementType.PARAMETER})
public @interface NonNullApi {
}

@Nonnull(when = When.MAYBE)
@TypeQualifierDefault({ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE_USE})
public @interface NullableApi {
}

@NullableApi
interface A {
    String foo(String x); // 可空性由接口A 的注解@NullableApi决定,fun foo(x: String?): String?

    @NotNullApi // 覆盖了接口A的@NullableApi, overriding default from the interface
    String bar(String x, @Nullable String y); // fun bar(x: String, y: String?): String 

    // The List<String> type argument is seen as nullable because of `@NullableApi`
    // having the `TYPE_USE` element type: 
    String baz(List<String> x); // fun baz(List<String?>?): String?

    // The type of `x` parameter remains platform because there's an explicit
    // UNKNOWN-marked nullability annotation:
    String qux(@Nonnull(when = When.UNKNOWN) String x); // fun baz(x: String!): String?
}

如果一个类型被@TypeQualifierDefault标注的注解所注解,比如上面的 接口 A 被 @NullableApi 标注,那么如果接口A 的成员(变量或者方法)如果没有被其他可空性注解直接标注,那么A的成员的可空性由@NullableApi 决定,如果成员被其他可空性注解修饰了那就相当于覆盖掉了@NullableApi,A 的成员可空性是否由@NullableApi决定,还有一个前提就是 @NullableApi中 @TypeQualifierDefault 的ElementType的参数类必须和成员类型一致,比如参数为ElementType.METHOD,那么A的成员就只有方法的可空性由@NullableApi 决定,其他类似,ElementType 参数可以为多个。 被@TypeQualifierDefault标注的注解所注解除了用于标注类,接口,字段,方法,参数等外 还可以标注包名,如果用来标注报名,那么这个包下的所有东西都默认情况下(没有被其他可空性标注或者覆盖)可空性都由标注包的注解来决定。


@Nonnull注解和When一起使用:

  • When.ALWAYS – 类型始终不为空,没有明确指定地默认使用该值(在kotlin中被视为kotlin不可为空类型)
  • When.MAYBE/NEVER – 类型可能为空(在kotlin中被视为kotlin可能为空类型)
  • When.UNKNOWN – 类型在kotlin中被视为平台类型
Java 8源码解析与学习实战 本文还有配套的精品资源,点击获取 简介:Java源码包是Java开发的基础,包含了Java SE的核心类库源代码。本文针对Java 8版本的src.zip源码压缩包,详细介绍了各个主要包(javax、com、org、java、launcher)的功能和作用,特别强调了源码对于学习和理解Java语言及API工作原理的重要性。读者可以将源码包导入IDE中,通过查看底层实现加深对... 阅读详情

相关推荐

视频教程-SAP S4 HANA FICO COPA 获利能力分析-ERP

SAP S4 HANA FICO COPA 获利能力分析 从业超过8年的SA...

weixin_33456805的博客 1442

@TypeQualifier

@TypeQualifier: This qualifier is applied to an annotation to denote that the annotation should be treated as a type qualifier. @Documented @Target(value=ANNOTATION_TYPE) @Retention(value=RUNTIME) ...

KKkeep的专栏 646

C++11并发与多线程笔记(2) 线程启动、结束,创建线程多法、join,detach

第二节 线程启动、结束,创建线程多法、join,detach 一、范例演示线程运行的开始 程序运行起来,生成一个进程,该进程所属的主线程开始自动运行;当主线程从main()函数返回,则整个进程执行完毕 主线程从main()开始执行,那么我们自己创建的线程,也需要从一个函数开始运行(初始函数),一旦这个函数运行完毕,线程也结束运行 整个进程是否执行完毕的标志是:主线程是否执行完,如果主线程执行完毕了,就代表整个进程执行完毕了,此时如果其他子线程还没有执行完,也会被强行终止【此条有例外,以后会解释】 创建

qq_38231713的博客 1万+

Java相关框架注解

1.Spring框架 @Nullable 允许为Null的对象,注解可用在的位置:方法,参数,字段 able可用的 @Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Documented @Nonnull(when = When.MAYBE) @TypeQualifierNickname public @interface Nullable

CsbLanca 332

Ubuntu20.04下运行LOAM系列:A-LOAM、LeGO-LOAM、SC-LeGO-LOAM、LIO-SAM 和 LVI-SAM

在我第一篇博文Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM2+Gazebo仿真运行ORB-SLAM2+各种相关库的安装的基础环境下跑通A-LOAM首先已经按照上一篇文章已经安装好了ROS noetic、Eigen3.4.0、OpenCV4.2.0和PCL1.10,A-LOAM在Github的开源地址:https://github.com/HKUST-Aerial-Robotics/A-LOAM。接下来根据代码要求,需要安装Ceres,另外环境的变

zardforever123的博客 3万+

“开宝五子棋陪练”-首款开放智能的五子棋习题练习安卓应用

使用Kotlin语言以及Jetpack Compose UI库开发,主要就是写Composable函数,显示棋盘、棋子和一些按钮,响应用户的点击和滑动操作,以及保存和恢复数据。但我针对本应用是用于做题的特殊需求,对该算法库做了一个简单的JNI层封装,方便UI前端Kotlin代码的调用。

weixin_44120030的博客 2396

Qualifier注解

字面理解 首先,字面意思,显然它是单词Qualify的一个变形,把y改i加er。Qualify是质量的意思。而Qualifier有合格者的意思。 合格者在这里有啥意思,显然,翻译之后我更困惑了。【检查这个参数是否合格?标准是啥?在哪检查?不合格会咋样? 代码层面 显然我薄弱的语文水平,领悟不到其中的深意。还是看代码吧。 Qualifier注解= 以下四个注解 @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMET

doordiey的博客 5810

保姆级教程:用Wokwi玩转ESP32 MicroPython仿真(含库文件配置指南)

本教程详细介绍了如何使用Wokwi平台进行ESP32 MicroPython仿真开发,包括库文件配置、传感器数据模拟和REPL调试技巧。通过Wokwi的仿真调试系统,开发者可以在浏览器中快速验证代码逻辑,提高开发效率,特别适合物联网项目的快速迭代。

weixin_29195615的博客 443

Type Qualifier

在编程语言中,类型限定符(Type Qualifier)是一个关键之,用于修饰 类型(type)。 维基百科中的解释: In the C, C++, and D programming languages, a type qualifier is a keyword that is applied to a type, resulting in a qualified type. For...

KKkeep的专栏 1056

如何利用VS2017创建一个简单的窗口

#如何利用VS2017创建一个简单的窗口 1、新建->Windows桌面向导 2、应用程序类型->桌面应用程序,点击确定 3、点击调试->开始调试 可建立如下图的窗口 4、可以在生成的项目文件的中找到windows17_2的应用程序,打开界面如下: 注:新建空白项目也可以,注意在解决方案资源器中添加.cpp文件,如源.cpp文件,下载代码见博文 ...

weixin_46894139的博客 2914

面试篇 - LoRA(Low-Rank Adaptation) 原理

输出示例:trainable params: 262,144 || all params: 6,742,016,000 || trainable%: 0.0039。论文实验显示:零初始化 BB 可使初始损失与预训练模型相差不足0.1%,而非零初始化可能差50%+。若初始 ΔW≠0,模型可能立即偏离预训练学到的知识(如GPT-3突然忘记如何造句)。:如同汽车改装,先保持原厂配置(W),再逐步加装新部件(ΔW),避免直接飙车失控。:大模型的权重变化矩阵 ΔWΔW 通常是低秩的(少数主成分主导变化)。

qq_60245590的博客 1152

java 成员与字段,java – 如何表示成员字段默认为@Nonnull?

我的问题是this one的后续行动。在过去版本的FindBugs中,可以使用@DefaultAnnotation(Nonnull.class)或@DefaultAnnotationForFields(Nonnull.class)来指示包中的所有字段都应该被视为@Nonnull。在当前版本的FindBugs(2.0)中,@DefaultAnnotation和@DefaultAnnotationFo...

weixin_34489829的博客 222

FPGA控制AD5754实现模数转换Verilog代码与测试激励

本文提供了使用FPGA控制AD5754芯片实现数字信号转模拟信号的Verilog代码和测试激励。AD5754芯片简介:AD5754是一款16位数字信号转模拟信号的芯片。通信方式:FPGA与AD5754之间通过SPI接口进行通信,SPI时钟clk的最大频率为30MHz。模拟输出:AD5754提供了四路模拟输出。工作方式:当前AD5754采用单极性工作方式。指令刷新:根据现有理解,同轴的速度和电流指令应同时刷新。利用LDAC引脚控制模拟信号的刷新,但需实际验证。CLR信号验证。

whm128的博客 246

Sprint Boot————@Qualifier、@Primary

引言 使用@Autowired自动注入时: 如果注入的接口有多个实现类,如下所示: 那么如果不指定具体是哪个实现类的Bean,在Spring Boot启动时就会发生异常(下图请点击查看): 异常的描述信息非常简单,就是告诉开发者,自动注入的地方需要一个Bean,而spring 容器却找到了3个实现类的Bean。 Action(可以采取的行动): 考虑使用@Primary注解或@Qualifi...

liuwei0376的专栏 447

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Kotlin与Java互操作

互操作就是在Kotlin中可以调用其他编程语言的接口,只要它们开放了接口,Kotlin就可以调用其成员属性和成员方法,这是其他编程语言所无法比拟的。同时,在进行Java编程时也可以调用Kotlin中的API接口。Kotlin调用JavaKotlin在设计时就考虑了与Java的互操作性。可以从Kotlin中自然地调用现有的Java代码,在Java代码中也可以很顺利地调用Kotlin代码。例如,在Ko

云栖社区 869

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Adam学习17之在window下直接使用maven对Adam进行编译打包

安装Adam——2.10-0.19 1.配置基本环境: jdk1.7 scala-2.10.4 maven 3.3.9 查看版本: D:\all\eclipse432\adam-2.10-0.19-git-bin\adam-2.10-0.19-git>javac -version javac 1.7.0_25 D:\all\eclipse432\adam-2

Keep Learning 1540

Spring源码中关于@Nullable和@NonNull

看Spring源码的时候能够经常看到这两个注解@Nullable和@NonNull,自己看了一下,简单说一下在自己的理解: @Nullable /** *一个通用的Spring注释,用于声明被注释的元素可以在{@code null}下一些情况。 *利用JSR-305元注释在支持JSR-305的通用工具上指示Java中的可空性,并由Kotlin用来推断Spring API的 *可空性。 *应该在参数,返回值和字段级别上使用。 方法覆盖应该重复父{@code @Nullable}注释.

Attention_0的博客 2338

Spring注解@NonNull作用 Spring注解@Nullable作用 Spring NonNull 注解作用 Spring Nullable注解作用

Spring注解@NonNull作用 Spring注解@Nullable作用 Spring NonNull 注解作用 Spring Nullable注解作用 @NonNull 或 @Nullable , 没有参数验证功能,只是一个标记注解,告知调用方:是否允许为null的情况。

HaHa_Sir的博客 9015

Spring:@Nullable和@NonNull

Spring:@Nullable和@NonNull 1 前言 Spring的注解@Nullable,@NonNull在spring的核心包spring-core中,注解部分代码如下: @Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Documented @Nonnull( when = When.MAYBE ) @TypeQuali

a232884c的博客 2763

Spring中@Qualifier注解详细解析

目录前言1. 源码2. 代码实战 前言 当一个接口有多个实现的时候 哪个注解可以指明是哪个实现类 可以通过使用@Qualifier 1. 源码 查看源码可以更加透彻的了解 @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.TYPE, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Doc

码农研究僧的博客 5461

android常见混淆内容

#---------------------------------1.基本指令---------------------------------- # 设置混淆的压缩比率 0 ~ 7 -optimizationpasses 5 # 混淆后类名都为小写 Aa aA -dontusemixedcaseclassnames # 指定不去忽略非公共库的类 ...

会微笑的阳光 1390

关于JAVA接口中继承的一个小问题

问题说明 在学习接口的时候,遇到了一个问题:创建一个接口JDK8,接口内部有一个静态方法和一个default方法,创建一个父类father,并在父类中创建一个方法重写接口中的default方法,创建一个子类subclass继承于父类并实现接口,在子类中想要调用接口中的default方法,程序报错。 问题复现 接口(JDK8)代码 public interface JDK8 { public static void method1() { } public default void

weixin_42796142的博客 301

Spring @TypeQualiferNickname

@Documented @Target(value=ANNOTATION_TYPE) public @interface TypeQualifierNickname 这个注解用于注解其它注解,当把@TypeQualifierNickname所注解x应用到元素y上时,相当于把注解x上的注解(除去@TypeQualifierNickname)都应用到元素y上,因此叫做注解x除去@TypeQuali...

金溪的博客 1460

@Qualifier注解知多少?-- Spring注入Bean时增加约束

一. 背景 Spring自动装配注入时,可以使用@Resource或者@Autowired注入bean。 但有时候仅仅一个bean_id还无法清晰明确出要注入的bean,因此可以引入@Qualifier注解。在class类和bean注入时,都加上@Qualifier(),来达到注入某个特指bean的作用 二. 方法 1. @Qualifier ...

成长之路 4462

@Nullable 注解

@Nullable

爱喝星冰乐的博客 2299

我应该使用哪个@NotNull Java注释?

I'm looking to make my code more readable as well as use tooling like IDE code inspection and/or st

CHCH998的博客 1197
上一篇: @TypeQualifierNickname
下一篇: Java 泛型之-协变&逆变
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮克桃在写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值