问题标签 [lombok]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5665 浏览

java - Java SneakyThrow of exceptions,类型擦除

有人可以解释这段代码吗?

这可能看起来很奇怪,但这不会产生强制转换异常,并且允许抛出已检查的异常而无需在签名中声明它,或者将其包装在未检查的异常中。

请注意,无论是sneakyThrow(...)或 main 都没有声明任何已检查的异常,但输出是:

这个 hack 在 Lombok 中使用,带有注解 @SneakyThrow,它允许在不声明的情况下抛出已检查的异常。


我知道它与类型擦除有关,但我不确定是否理解黑客的每个部分。


编辑: 我知道我们可以Integer在 a中插入一个List<String>检查/未检查异常的区别是编译时功能。

当从非泛型类型List转换为泛型类型List<XXX>时,编译器会产生警告。(T) ex但是像上面的代码那样直接转换为泛型类型不太常见。

如果您愿意,对我来说似乎很奇怪的部分是,我理解在 JVM 内部 aList<Dog>List<Cat>看起来一样,但上面的代码似乎意味着最终我们也可以将 Cat 类型的值赋给 Dog 类型的变量或类似的东西。

0 投票
1 回答
1350 浏览

debugging - 如何在 IntelliJ 中调试 delomboked 代码?

在我基于 Maven 的项目中,我使用 Lombok 来保存一些样板代码。此外,我正在使用一个 Spring 数据库,它使用 AspectJ 来完成任务。遗憾的是,Lombok 和 AspectJ 在开箱即用时不能很好地协同工作,因为 AspectJ 编译器会重新编译 Java 文件。所以 Lombok 实现的 Getter 和 Setter 丢失了。

我决定使用 Lombok Maven 插件来 delombok 我的代码。然后将此代码传递给 AspectJ。这是基本流程:

但是,这种方法的一个缺点是:我似乎失去了使用 IntelliJ 的调试支持。在 /src/main/java 或 /target/generated-sources/delombok Java 文件中设置的断点永远不会被命中。我使用 IntelliJ Maven 插件运行项目,选择一个生命周期项目(例如“测试”),调试挂钩。可悲的是,断点永远不会被击中。

可以做些什么来获得调试支持?

0 投票
34 回答
189472 浏览

intellij-idea - 使用 Lombok 的 @Slf4j 和 Intellij 构建:找不到符号日志

我有一个从命令行构建没有问题的 Maven 项目。但是,当我使用 IntelliJ 构建它时,出现错误:

java文件中没有定义或导入日志,但是有一个

应该定义日志类的类主体之前的语句。

在项目结构窗口中,类:

列在库下,并指示已下载并可用。

知道为什么这会通过命令行使用 maven 构建,而不是通过 IntelliJ 构建,以及如何解决这个问题?

0 投票
1 回答
785 浏览

java - 自定义 Lombok 扩展需要 Lombok 包吗?

我一直在尝试向 Lombok 添加自定义注释。我的出发点是 GitHub 上源代码的一个分支。

我添加了一个可以正常工作的注释。我可以使用包含的 Eclipse 启动(或构建一个 jar 并将其交换到我的 eclipse.ini 中)来测试并查看结果:我已经成功地将一个方法插入到一个类中。

现在,这只有在我将额外的处理程序类放在lombok包下时才有效。如果我把它们放在另一个包下,它们根本就行不通。我可以创建一个新的物理源目录,调整构建脚本以适当地包含它,并让我的新类存在于其中,只要它在 lombok 下逻辑打包新类。

为什么是这样?反正周围有吗?我想将我写的任何添加分开到一个新的顶级包中,以使它们与官方的龙目岛扩展区分开来。

0 投票
2 回答
5667 浏览

java - Lombok 在大型项目中减慢了构建过程

如果我在一个项目中使用 Lombok(大约 15 个单独的项目 - EJB、Web 等),Lombok 会使构建过程减慢大约 2-3 倍。有什么解决方案,还是龙目岛的一个缺点?

只是看项目的大小,大约是 400 @Getter、 120 @Data、 250@Setter和 100 @EqualsAndHashCode

环境:IBM Rational Application Developer 8.0.4 和最新版本的 Lombok (0.11.6)

有什么想法可以让它更快吗?

0 投票
1 回答
2141 浏览

javadoc - 我使用 Lombok 项目,但 getter 和 setter 没有 JavaDoc

我使用 Lombok 项目,但 getter 和 setter 没有 JavaDoc。

如何激活此选项?

0 投票
1 回答
2962 浏览

java - 使用 Lombok 的 @Cleanup 时如何捕获异常?

我正在使用Lombok 的 @Cleanup,即使我发现它非常有用,我也无法弄清楚如何捕获使用要清理的资源的主要代码块引发的异常。

我的代码如下:

使用 Lombok,我可以这样简化上面的代码:

但是我会错过捕获 for 循环执行时可能出现的任何异常的可能性。有没有办法用 Lombok 优雅地做到这一点?(即除了以编程方式使用“try /catch?”

首先十分感谢。

0 投票
1 回答
205 浏览

attributes - Hyperjaxb/lombok:如何强制 Hyperjaxb 在属性而不是方法上生成注释映射?

我想在我的属性上添加 jpa 注释,而不是在 getter 和 setter 上。可以为此配置 hyperjaxb 吗?

我想要这个,因为我使用 lombok 是为了避免 getter 和 setter 代码,并且在属性上方有“@getter”“@setter”。

谢谢你

0 投票
5 回答
67882 浏览

eclipse - 使用 Lombok 的 @Slf4j 和 Eclipse 构建:找不到符号日志

我在 Eclipse 中有 lombok 插件,并在 java 编译器下启用了 Eclipse 中的注释处理,但是当我使用 @Slf4j 注释时仍然无法识别日志语句。

我们是否必须进行任何其他设置?

0 投票
2 回答
7648 浏览

java - Javac 无法在具有公共枚举的静态嵌套类上编译注释

我遇到了以下 javac 编译失败,其中 javac 无法识别具有公共枚举的静态嵌套类上的注释。一旦我将枚举移出静态嵌套类,编译错误就解决了。有谁知道为什么 javac 失败了?这是一个java编译器错误吗?还是有我不知道的Java细微差别?

下面是一个独立的测试用例。

编译失败:

编译输出:

编译:

编译没有错误:

需要指出的事情:

1)注意编译失败的行号。解析 NestedClassNoEnum 的注解没有问题。

2)Java版本: