import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.annotation.Nonnull;
import javax.annotation.meta.TypeQualifierNickname;
@Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Nonnull
@TypeQualifierNickname
public @interface NonNull {
package org.springframework.lang;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import javax.annotation.Nonnull;
import javax.annotation.meta.TypeQualifierNickname;
import javax.annotation.meta.When;
@Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Nonnull(
when = When.MAYBE
@TypeQualifierNickname
public @interface Nullable {
@Nonnull、@Nullable( JSR305引入)可以用在方法、参数、变量上。@Nonnull表示不可以为Null,@Nullable表示可以为Null。想在加了@Nonnull后编码传入Null时有非空警告,必须有FindBugs插件配合,或者使用IDEA;运行时不检查。
JDK中:
package com.sun.istack.internal;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Documented
@Retention(RetentionPolicy.CLASS)
@Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE})
public @interface NotNull {
@NotNull( JSR303引入)可以用在方法、参数、变量、本地变量(var)中,运行时检查。
类似注解:
@Null 被注释的元素必须为null
@NotNull 被注释的元素不能为null,可以为空字符串
@AssertTrue 被注释的元素必须为true
@AssertFalse 被注释的元素必须为false
@Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max,min) 被注释的元素的大小必须在指定的范围内。
@Digits(integer,fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past 被注释的元素必须是一个过去的日期
@Future 被注释的元素必须是一个将来的日期
@Pattern(value) 被注释的元素必须符合指定的正则表达式。
@Email 被注释的元素必须是电子邮件地址
@Length 被注释的字符串的大小必须在指定的范围内
@Range 被注释的元素必须在合适的范围内
@NotEmpty:用在集合类上,不能为null,并且长度必须大于0
@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0
参考:jianshu.com/p/32327ca2365f
空对象模式用来替代Null,和@Nonnull一样可以避免NPE(Null Point Exception)。参考:https://www.runoob.com/design-pattern/null-object-pattern.html
装饰者是结构性设计模式的一种。我们一般用这个词,是指对于本身事物没有去改变他,而是给他加了一个外框装饰,是为了这个事物。在代码的世界中,就是对于某一对象的装饰。这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。
装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。它是作为现有的类的一个包装。定义:
动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。
Component:可
Spring:@Nullable和@NonNull
Spring的注解@Nullable,@NonNull在spring的核心包spring-core中,注解部分代码如下:
@Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Nonnull(
when = When.MAYBE
@TypeQuali
ViewPager2已经出来很长一段时间了,但之前一直都是alpha版本,几次版本迭代中,内容细节变化也挺多,前阵子第一个正式版发布,不巧NCP爆发,在家里索性把之前的预研Demo整理整理,梳理下内容点写一篇博客,也算把预研工作正式收个尾。
首先先感谢一个我确实记不得的大兄嘚,预研的demo的前身,来自于GitHub,是我很久之前看alpha版本的使用时下载的,只下了一个zip,着实找不...
相信大家在平时的android开发中肯定用过Bitmap,而且用的还不少,那么你对它有足够的了解吗?你的使用高效吗?对于超大图片是如何处理的呢?下面就让我们一起来从基础学习一下Bitmap。
一、Bitmap是什么?
位图(Bitmap),又称栅格图或点阵图,是使用像素阵列来表示的图像。
位图(Bitmap)也可指:
一种数据结构,代表了有限域中的稠集,每一个元素至少出现一次,没有其他...
以上两个注解在程序运行的过程中不会起任何作用,只会在IDE、编译器、FindBugs检查、生成文档的时候有做提示;我使用的IDE是STS,不会做自动的检查,只有安装了FindBugs插件并运行后会做对应的提示,
@
NonNull可以标注在方法、字段、参数之上,表示对应的值不可以为
空
@
Nullable注解可以标注在方法、字段、参数之上,表示对应的值可以为
空
以上两个注解在程序运行的过程中不会起任何作用,只会在IDE、编译器、FindBugs检查、生成文档的时候有做提示;我使用的IDE是STS,不会做自动的检查,只有安装了FindBugs插件并运行后会做对应的提示
目录一. 为什么要用@NonNull?二. @NonNull如何使用?三. @NonNull源码四. 特别说明
一. 为什么要用@NonNull?
二. @NonNull如何使用?
三. @NonNull源码
四. 特别说明
本文已经收录在Lombok注解系列文章总览中,并继承上文中所提的特别说明。
源码地址:gitee
Employee e = DB.getEmployee("Bob");
//判断雇员e是否应该今天发薪水,如果是,则发
if(e != null && e.isTimeToPay(today))
e.pay();
如果Bob对象不存在,e就是一个null,然后&&的第一个表达式会被首先求值,而仅当第一个表达式为true时才...
@NotNull 和 @
Nullable作用于方法上,参数上以及字段上。
@NotNull则表示传入的值不可以为null,否则发出提示警告。
@
Nullable则表示传入的值可以为null,不会发出提示警告。