LomBok 的相关目录已经整理出来,希望大家可以根据需求自助学习,好工具要大家分享:
介绍一下Lombok中的Cleanup这个annotation , 他的方便之处,大家在代码中一睹风采:
使用前:
import java.io.*; public class CleanupExample { public static void main(String[] args) throws IOException { InputStream in = new FileInputStream(args[0]); try { OutputStream out = new FileOutputStream(args[1]); try { byte[] b = new byte[10000]; while (true) { int r = in.read(b); if (r == -1) break; out.write(b, 0, r); } } finally { if (out != null) { out.close(); } } } finally { if (in != null) { in.close(); } } } }
使用后:
import lombok.Cleanup; import java.io.*; public class CleanupExample { public static void main(String[] args) throws IOException { @Cleanup InputStream in = new FileInputStream(args[0]); @Cleanup OutputStream out = new FileOutputStream(args[1]); byte[] b = new byte[10000]; while (true) { int r = in.read(b); if (r == -1) break; out.write(b, 0, r); } } }
单单从代码的行数上面就可以知道已经精简了不少,同时,代码的可读性也进一步提高。从代码中我们可以容易的看出,@Cleanup的作用就是在当前变量不在有效范围内的时候,对其进行自动的资源回收。在Java中的Stream上使用Cleanup Annotation,就是对其调用close方法。
但是,请大家注意,Cleanup 存在一个小问题:
官网给出了提示,如果你的代码中出现了异常,那么会触发cleanup方法抛出异常,导致把原始异常吞掉,这样就导致你在上层不知道发生了什么事情,这个事情很严重啊,但是如果说你是在调用close方法的时候出了异常,那么Cleanup这个annotation是不会把异常吞掉的。 同时,官网也指出,作业也没有找到更好的方式去解决这个问题,如果他们找到了会立刻fix这个问题,否则也就只能等待Java 有可能在Update的时候出现新的解决方案。
相关推荐
2. 注解(Annotations):Lombok 注解如 `@NonNull`、`@Cleanup`、`@NoArgsConstructor` 等,它们提供了简洁的代码表示方式,让代码更加清晰。例如,`@NonNull` 可以确保字段非空,`@Cleanup` 自动关闭资源,`@...
还有`@Cleanup`,它可以在使用后自动关闭资源,如数据库连接或文件流。 此外,Lombok还支持自定义生成的代码,通过`@Accessors`可以设置getter和setter的默认访问权限,或者使用链式调用。`@Builder`注解则可以创建...
Eclipse 整合 Lombok 文档 ...* @Cleanup:关闭流 * @Synchronized:对象同步 * @SneakyThrows:抛出异常 * @Log4j:log4j 日志声明 通过使用 Lombok,可以大大简化 Java 代码的编写,提高开发效率。
7. `@Cleanup`:用于自动关闭流,类似于 Java 7 的 try-with-resources 语句,但适用于 Java 6 和更早版本。 8. `@Singular`:当字段是集合类型时,可以配合 `@Builder` 或 `@Data` 使用,生成带有单数形式的 add ...
7. **@Cleanup**:这是一个实用的注解,用于自动关闭实现了AutoCloseable或Closeable接口的资源,如文件流,避免资源泄露。 8. **@Builder**:这个注解允许你创建一个构建者模式,使得创建复杂对象更加简单。 9. *...
- `@Cleanup`:自动关闭流资源,如FileInputStream等,类似于try-with-resources语句。 3. **构造函数优化**: - `@Builder`:为类提供构建者模式,使得创建复杂对象更方便。 - `@Singular`:配合`@Builder`,在...
6. **@Cleanup**: 自动关闭资源,如文件流,类似于Java 7的try-with-resources语句。 7. **@Log** (例如 @Log4j, @Log4j2, @SLF4J): 自动在类中注入日志对象,无需手动创建。 **在Eclipse中使用Lombok**: 在...
7. `@Cleanup`: 这个注解用于自动关闭流或者任何实现了`AutoCloseable`接口的对象,防止资源泄露。 在使用Lombok时,你需要在IDE中安装Lombok插件,并在项目构建配置中添加Lombok依赖。例如,在Maven项目中,你可以...
9. **@Cleanup**: 用于自动关闭资源,如数据库连接或文件流。当使用try-with-resources语句不方便时,这是一个很好的选择。 10. **@Builder**: 为类或字段生成建造者模式的实现,使得构建复杂对象更加方便。 使用...
- `@Cleanup`:自动关闭流资源,类似于Java 7的try-with-resources语句。 - `@Synchronized`:同步方法或属性,提供线程安全。 - `@Builder`:提供构建者模式,使创建复杂对象变得更简单。 - `@Log4j`,`@Slf4j`...
`@Cleanup` 注解可以帮助自动管理资源,如关闭流。 3. **访问控制**:`@Synchronized` 可以将方法或块同步,以避免并发问题。`@Getter(onMethod_ = @Override)` 可以强制生成的getter覆盖父类的方法。 4. **构建者...
5. **其他注解**:除了上述的基本注解,Lombok还提供了一些高级特性,如`@NonNull`进行非空检查,`@Cleanup`自动关闭资源,`@Builder`用于构建器模式,`@Synchronized`同步方法,以及`@SneakyThrows`悄悄抛出异常等...
5. `@Cleanup`:自动关闭流资源。 Lombok的使用可以极大地减少代码量,提高代码质量,并且减少了因为手动编写这些方法而可能导致的错误。此外,Lombok还提供了更多的高级功能,如自定义访问级别、构造函数注入、...
- `@Cleanup`: 自动关闭资源,类似于 try-with-resources 语句。 - `@Builder`: 支持链式构建器模式。 - `@Singular`: 在集合字段上使用,可以简化单个元素的添加操作。 使用 Lombok 的优点在于: - 代码更简洁,...
8. `@Cleanup`:自动关闭流,避免资源泄露,适用于实现了AutoCloseable接口的对象。 9. `@Builder`:允许以链式方式创建复杂对象,提供了一种构建者模式的便利实现。 10. `@Synchronized`:同步方法或属性,确保多...
Lombok还提供了其他注解,如`@NonNull`用于验证非空参数,`@Cleanup`自动关闭资源,`@Log`快速创建日志对象等,大大提升了开发效率。在实际项目中,合理使用Lombok能帮助开发者专注于业务逻辑,而不是琐碎的代码生成...
7. `@NonNull` 和 `@Cleanup`:前者用于标记非空字段,后者在使用后会自动关闭资源,如文件流。 Lombok 1.18.4 版本可能包含的改进和修复包括对新 JDK 版本的支持、与现有库的兼容性增强、编译速度优化以及对注解...
LomBok主要特性有:自动生成默认的getter/setter方法、自动化的资源管理(通过@Cleanup注解)及注解驱动的异常处理等。目前在国外广泛应用。 LomBok它和jquery一样,目标是让程序员写更少的代码,以及改进一些原始语法...