编辑手记: EMPTY_LOB与NULL在字面意思上看起来差不多,但实际上,它们却有天壤之别。...前不久写过一篇文章,描述如果表包含了触发器,在通过IMP导入数据的时候,原本的EMPTY_LOB将被转化为NULL。有朋友在文章的回复中问,EMPTY_LOB和NULL的区别,这里就简单描述一下。...包含触发器的LOB表执行IMP导致EMPTY_LOB变为空: http://yangtingkun.itpub.net/post/468/495024 说实话,二者其实差别还是相当大的。...使用IS NULL作为条件进行判断,EMPTY_LOB是查询不到的。 利用DBMS_LOB.GETLENGTH也可以看出二者的区别: ? ?...二者最大的区别在于: EMPTY_LOB虽然没有LOB的内容,但是已经做好了插入LOB内容的准备,用户获取到LOB的头信息后就可以直接插入数据了。 而对于NULL来说,显然是不能直接修改的。 ?
2、构建Optional 构建一个Optional对象;方法有:empty( )、of( )、ofNullable( ) //返回一个描述给定值的Optional ,如果不为null ,...Optional.ofNullable(""); //返回一个Optional描述给定的非null值。...} } } 4、测试使用 4.1、构建 //返回一个描述给定值的Optional ,如果不为null ,则返回一个空的Optional 。...(null); // 构建一个value不可以为null的optional对象,如果of()的入参为null会报空指针异常; Optional s2 = Optional.of(new...; import lombok.Data; import lombok.NoArgsConstructor; import lombok.ToString; import org.junit.Test;
尽管这是断言非空参数等前置条件的好方法,但这种方法主要存在两个问题: 通常在JVM中禁用断言 一个虚假的声明将导致在未经检查的错误无法恢复 因此,建议程序员不要使用断言来检查条件。...因此,如果一个API不允许接受有多个参数为空,更好地方法是预先检查API中的每一个非空参数。...此类还具有 isNull()和 nonNull()方法,可用作谓词来检查对象是否为null。 八.使用Optional ---- Java8在该语言中引入了一个新的 OptionalAPI。...因此,如果项目已经使用Lombok来消除样板代码,则 @NonNull可以代替作为空检查。...(@NonNullObject param){ System.out.println(param); } 因此,我们只是注解了需要进行null检查的对象,并且Lombok生成了已编译的类: publicvoid
是一个java库,它自动插入到编辑器和构建工具中,增强java的性能。...大概的意思:Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。...可以在方法或构造器的参数上使用 @NonNull,lombok会为你生成一个空值检查的声明。...它将使用所有非静态,非瞬态字段,但是可以通过使用@ EqualsAndHashCode.Include或@EqualsAndHashCode标记类型成员来修改使用的字段。...public static class Exercise { String name; T value; } } @Builder使用 @Builder注释会为您的类生成复杂的构建器
Lombok是一个java库,它可以自动插入您的编辑器和构建工具,为您的java提供帮助。再也不要写其他的getter或equals方法了。尽早访问诸如val之类的未来java特性。 ...因为需要配置的原因,但目前编辑器和编译器还没有那么智能和友善o(╥﹏╥)o......new HashSet(); List useLombok2=new ArrayList(); @NonNull(常用) 该注解能够为方法,或构造函数的参数提供非空检查...指定参数的构造器和包含全部字段的构造器。...第1个和第3个注解还是比较挺实用的,如果要生成部分参数的构造器,博主是比较建议手动生成,感觉注解还不太好用了。
在写JavaBean对象时候 每次都要重复Alt+insert写Getter/Setter toString 有参构造 和 无参构造 特别麻烦 浪费时间 今天给大家推荐神器lombok 官方支持的神器...可以帮您省去大量时间 让代码简洁易读 什么是lombok Project Lombok 是一个 java 库,可自动插入您的编辑器和构建工具,为您的 java 增添趣味。...永远不要再编写另一个 getter 或 equals 方法,使用一个注释,您的类就有一个功能齐全的构建器、自动化您的日志记录变量等等。...) { this.name = name; } } @Getter @Getter方法与@Setter方法一样 这里不描述了 @NonNull 作用于属性或方法的参数上 用于做非空检查...小结 对于刚学习Java的小白 lombok是不推荐的 等熟悉构造之后 在尝试使用lombok 提高效率 参考文档 lombok官网:Project Lombok https://projectlombok.org
本篇文章将详细介绍 Optional 类,以及如何用它消除代码中的 null 检查。在开始之前首先来看下什么是 NPE,以及在 Java 8 之前是如何处理 NPE 问题的。...避免使用 null 检查 空指针异常是一个运行时异常,对于这一类异常,如果没有明确的处理方式,那么最佳实践在于让程序早点挂掉。...Optional 类 为了更好的解决和避免常见的 NPE 问题,Java 8 中引入了一个新的类 java.util.Optional,Optional 值可以为 null,如果值存在,调用 isPresent...empty() 方法用于创建一个没有值的Optional对象: Optional emptyOpt = Optional.empty(); empty() 方法创建的对象没有值,如果对...实践 上面提到创建 Optional 对象有三个方法,empty() 方法比较简单,主要是 of() 和 ofNullable() 方法。
从上面的说明里我们可以初步认识一下 Lombok,一个作用于编辑器和构建工具的 Java 库,可以对编写的 Java 代码进行增强,比如说不用再写实体类的 getter 方法,equals 方法而是自动生成...这时候如果我们使用 Lombok 提供 @Getter/@Setter 注解就能帮我们省去 getter 和 setter 方法的维护,由 Lombok 对 User 类自动生成 getter 和 setter...this.password = password; } } } 2.4 构造器注解 再来看下平时经常会遇见的场景,为实体类编写构造器方法,Lombok 提供了三个不同构造器注解...:User3 user3 = new User3("user3", "zxc123"); 2.5 @ToString @ToString 会给类自动生成易阅读的 toString 方法,带上有所非静态字段的属性名称和值...2.6 @EqualsAndHashCode @EqualsAndHashCode 注解就是用于根据类所拥有的非静态字段自动重写 equals 方法和 hashCode 方法,方便我们用于对象间的比较。
使用java编写代码,十之八九都是在写java类,从而构建java对象。lombok之前也说了不少,但使用了这么多年,感觉还是有很多技巧可以使用的。...毫无疑问,使用lombok,编写的java代码很优雅,而使用起来和普通的java编码方式创建的类毫无二致。不过,这样就满足了吗?...Wither 用wither方式构建对象,这在Objective-C 中比较多见。 适用的场景是,使用几个必要的参数构建对象,其他参数,动态的拼装。...举个例子,我们构建一个ApiClient,它的用户名和密码是必须的,他的ApiService的地址有一个默认值,然后我们可以自己定制这个地址。...Accessors 访问器模式,是给一个普通的Bean增加一个便捷的访问器,包括读和写。
使用java编写代码,十之八九都是在写java类,从而构建java对象。lombok之前也说了不少,但使用了这么多年,感觉还是有很多技巧可以使用的。...毫无疑问,使用lombok,编写的java代码很优雅,而使用起来和普通的java编码方式创建的类毫无二致。 不过,这样就满足了吗?...Wither 用wither方式构建对象,这在Objective-C 中比较多见。 适用的场景是,使用几个必要的参数构建对象,其他参数,动态的拼装。...举个例子,我们构建一个ApiClient,它的用户名和密码是必须的,他的ApiService的地址有一个默认值,然后我们可以自己定制这个地址。...Accessors 访问器模式,是给一个普通的Bean增加一个便捷的访问器,包括读和写。
bean添加无参构造器和有参构造器,甚至可以在Java代码中使用val和var声明一个动态变量,而无需再指定具体的变量类型,区别只是val声明的变量为final。...Lombok的构建支持maven和gradle,同时eclipse、myeclipse和idea等主流IDE也都和lombok兼容,所以可以放心大胆地使用Lombok,不用担心IDE的编译检查问题。...Lombok栗子 Eclipse安装Lombok支持 官网Lombok https://projectlombok.org/download 下载jar包或者通过构建工具maven,gradle下载jar...@NonNull注解 @NonNull注解标注方法和构造器的参数,如果参数为null,则会抛出空指针异常,不需要在代码中进行null检测 public class NonNullExample {...它标注的类和字段都会被声明为final @Builder注解 @Builder注解为类生成builder api以供调用。Builder是一种解决包含数量巨大且繁杂的字段的类的一种构建方式。
而当我们如果在开发环境中使用Lombok开发插件后,可以省出重复构建,诸如hashCode和equals这样的方法以及各种业务对象模型的accessor和ToString等方法的大量时间。...,将方法声明为同步的,并自动加锁,而锁对象是一个私有的属性$lock或$LOCK,而java中的synchronized关键字锁对象是this,锁在this或者自己的类对象上存在副作用,就是你不能阻止非受控代码去锁...String> lists2 = new ArrayList(); final Map maps2 = new HashMap(); } @Nonnull为方法和构造函数的参数提供非空检查...String shap; } @NoArgsConstructor,@RequiredArgsConstructor and @AllArgsConstructor,分别为类自动生成无参构造,指定参数构造器和包含所有参数构造器...private final int id; public int getId() { return this.id; } ... } @Builder提供构建值对象方式
lombok之前也说了不少,但使用了这么多年,感觉还是有很多技巧可以使用的。 毫无疑问,使用lombok,编写的java代码很优雅,而使用起来和普通的java编码方式创建的类毫无二致。...Wither 用wither方式构建对象,这在Objective-C 中比较多见。 适用的场景是,使用几个必要的参数构建对象,其他参数,动态的拼装。...举个例子,我们构建一个ApiClient,它的用户名和密码是必须的,他的ApiService的地址有一个默认值,然后我们可以自己定制这个地址。...@Test public void test1() { ApiClient client1=new ApiClient(null, null,null); System.out.println(client1...Accessors 访问器模式,是给一个普通的Bean增加一个便捷的访问器,包括读和写。
---- Lombok项目是一个Java库,可自动插入你的编辑器以及构建工具,为你的Java增添趣味。...password + '\'' + ", email='" + email + '\'' + '}'; } // 重写equals和hashCode...Override public boolean equals(Object o) { if (this == o) return true; if (o == null...安装和使用 3.1 安装 Lombok集成到 javac中作为一个注解处理器来启动。在IDEA中用插件的形式来支持Lombok,所以要使用则要先安装插件,然后再启动注解处理器 ? ?...EqualsAndHashCode @Builder 生成的对象可链式调用set @Slf4j(还有其它的log注解) 不用再new一个log对象,可直接调用 log.info("日志") @NonNull 非空检查
故强烈建议项目中使用lombok,去掉bean中get、set、toString、equals和hashCode等方法的代码。 一、IDEA安装Lombok 安装过程如下图 ? ?...(); 4、@NonNull注解能够为方法或构造函数的参数提供非空检查。...5、@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor,这几个注解分别自动生成了无参构造器、指定参数的构造器和包含所有参数的构造器...NonNull private String field; public NoArgsExample() { } } } 6、@Builder注解提供了一种比较推崇的构建值对象的方式...this.occupations + ")"; } } } 7、@Data注解作用比较全,其包含注解的集合@ToString,@EqualsAndHashCode,所有字段的@Getter和所有非
在开发环境中使用Lombok插件后,Java开发人员可以节省出重复构建,诸如hashCode和equals这样的方法以及各种业务对象模型的accessor和ToString等方法的大量时间。...方法,同时还可以为生成的方法指定访问修饰符,当然,默认为public 这两个注解直接用在类上,可以为此类里的所有非静态成员变量生成对应的get和set方法。...void setAge(int age) { this.age = age; } } @NonNull 这个注解可以用在成员方法或者构造方法的参数前面,会自动产生一个关于此参数的非空检查...从上面的Lombok执行的流程图中可以看出,在Javac 解析成AST抽象语法树之后, Lombok 根据自己编写的注解处理器,动态地修改 AST,增加新的节点(即Lombok自定义注解所需要生成的代码...在Lombok中对于其自定义注解进行实际的替换、修改和处理的正是这些handler类。对于其实现的细节可以具体参考其中的代码。 Java6以后,java编译器已经有了开源的版本了。
bean添加无参构造器和有参构造器,甚至可以在Java代码中使用val和var声明一个动态变量,而无需再指定具体的变量类型,区别只是val声明的变量为final。...Lombok的构建支持maven和gradle,同时eclipse、myeclipse和idea等主流IDE也都和lombok兼容,所以可以放心大胆地使用Lombok,不用担心IDE的编译检查问题。...Eclipse安装Lombok支持 官网Lombok https://projectlombok.org/download 下载jar包或者通过构建工具maven,gradle下载jar包 双击jar包...@NonNull注解 @NonNull注解标注方法和构造器的参数,如果参数为null,则会抛出空指针异常,不需要在代码中进行null检测 public class NonNullExample { ...它标注的类和字段都会被声明为final @Builder注解 @Builder注解为类生成builder api以供调用。Builder是一种解决包含数量巨大且繁杂的字段的类的一种构建方式。
这个想法是用户可以将注解处理器(由自己编写,或通过第三方依赖,如Lombok)放入构建类路径( build classpath)。...当那些处理器举起手应答时,编译器将控制权连同编译上下文的进程转交给它们进行处理。 对于注解处理器来说,可能最常见的情况是生成新的源文件或执行某种编译时检查。...如您所知,NetBeans检查器(不论是什么IDE这都会发生)都会检测到编译的类字节码,包括Lombok添加到进程中的添加。...注解类属性@NonNull就足够了, Lombok将通过NullPointerException在构造函数和setter方法中适当地生成null检查。...检查异常(Checked Exceptions) 众所周知,Java区分了被检查和未检查的异常。
是一个Java库,能自动插入编辑器并构建工具,简化Java开发。...可以在方法或构造器的参数上使用 @NonNull,lombok会为你生成一个空值检查的声明。...相当于以下代码 if (param == null) { throw new NullPointerException("null"); } 使用lombok方式: @Data public...public static class Exercise { String name; T value; } } @Builder @Builder注释会为您的类生成复杂的构建器...如何生成和查找getter和setter。
领取专属 10元无门槛券
手把手带您无忧上云