龙目岛在大型项目中放慢建设进程
如果我在一个项目中使用Lombok(大约15个单独的项目-EJB,Web,...),Lombok减慢了构建过程约2-3次.是否有任何解决方案,或者是Lombok的缺点? 只是为了查看项目的大小,这是关于 400 @Getter, 120 @Data, 250 @Setter和 100 @EqualsAndHashCode. 环境:IBM合理应用程序开发人员8.0.4,最新版本的Lombok(0.11.6) 有什么想法可以使其更快? 解决方案 最后,有一个可用的边缘构建,可以加快Lombok的速度!他们在加速速度方面做了很多工作,现在对我来说效果很好.构建时间几乎减半了,我不必每次保存文件. 我还进行了我的项目,以进行速度比较,而delomboked代码和用Lombok-Annotations的代码之间的差异并不多. 您可以在此处下载边缘构建: http://projectlombok.org/download-down-gold-ged.html
0 2024-04-05
编程技术问答社区
无法找到符号的错误。Lombok 1.18.6与Gradle 5.2.1, JDK 10不兼容
使用gradle 5.2.1和Lombok 1.18.6构建,JDK 10的依赖性失败了.似乎伦波克注释没有得到适当处理.我一直在源中的各个Java文件中遇到"找不到符号"错误.对为什么会发生这种情况有什么想法吗?我发现已经创建了一个缺陷:/1572 我正在使用: Java JDK 10 gradle 5.2.1 Lombok 1.18.6 谢谢. 解决方案 我在编译时间内使用插件来处理Lombok注释的插件找到了以下工作. 我必须在build.gradle中执行以下步骤: 1)添加id "net.ltgt.apt" version "0.15"到插件部分. 2)添加maven { url 'https://projectlombok.org/edge-releases' }到存储库部分. 3)添加以下依赖项部分: compileOnly 'org.projectlombok:lombok:edge-SNAPSHOT'
0 2024-04-04
编程技术问答社区
Lombok @Builder不创建不可变的对象?
在许多站点中,我看到Lombok @builder可用于在这里创建不变的对象(TimeIntervalData td = TimeIntervalData.builder().endTime("12:00").startTime("10:00").build(); td.setEndTime("14:00"); System.out.println(td.getEndTime()); 我不确定如何在使用构建器构建的对象上使用固定器.我这里有我缺少的东西吗? 解决方案 是的,Lombok Builder不会创建不变的实例util用户根据 lombok.builder @Builder让您可以自动生成让您的类所需的代码与: Person.builder().name("Adam Savage").city("San Francisco").job("Mythbusters").job("Unchained Reaction").build(); 根据文档,它只是创建具有相
0 2024-04-04
编程技术问答社区
在用帮助方法为Java对象生成测试数据时提供默认值
假设以下pojo: @Getter @Setter public class UserRequest { private String username; private String password; private String email; } 现在我想为此课程生成各种测试数据.每当未明确设置某些字段时,应设置默认值.请记住,我不能将Lombok的@Builder或@Builder.Default添加到原始类别或以其他方式进行修改. . 所以我想出了以下助手类: public class UserRequestTestDataUtils { public static final String DEFAULT_USERNAME = "foo"; public static final String DEFAULT_PASSWORD = "bar"; public static final String DEFA
0 2024-04-04
编程技术问答社区
为什么@data和@builder不一起工作
我有这个简单的类 public class ErrorDetails { private String param = null; private String moreInfo = null; private String reason = null; ... } 重构后,我添加了@Data和@Builder,但是所有的实例都不再起作用 ErrorDetails errorDetails = new ErrorDetails(); 'errordetails(java.lang.string,java.lang.string,java.lang.string)' 不是公开 'com.nordea.openbanking.payments.common.ndf.client.model.error.errordetails'. 无法从外部软件包访问 如果我删除了@Builder,则可以正常工作, 为什么我不能一起使用@Data>
8 2024-04-04
编程技术问答社区
地图似乎无法识别Lombok的@superbuilder
我有两个这样的域类. @Getter @Setter public class User { private String name; } @Getter @Setter public class Student extends User { private int grade; } 我还有两个这样的DTO课程. @Getter @SuperBuilder public class UserDto { private final String name; } @Getter @SuperBuilder public class StudentDto extends UserDto { private final int grade; } 所以我做了一个映射器类StudentMapper,它扩展了genericmapper. public interface GenericMapper { D toDto(E
8 2024-04-04
编程技术问答社区
如何解决。Lombok builder()方法在IntelliJ中似乎不被认可?
我不确定我在做什么错.有人可以帮我 pom: 实施: 使用它如下: builder()方法似乎没有被识别.我正在使用Intellij.有我缺少的东西吗? 以下是我的Intellij设置: 解决方案 除了provided范围中的依赖性外,您还必须启用注释处理(如果使用Intellij Idea)并安装 Lombok插件. org.projectlombok lombok ${lombok.version} provided 注释处理:导航到File - > Settings - > Build, Execution, Deployment - > - > Compiler - > - > Annotation
0 2024-04-04
编程技术问答社区
自定义Lombok超级建筑商
我有一个父母抽象课"父母"和"孩子""孩子".我正在使用@superbuilder生成构建器API.现在,我想对班级"父"和"孩子"的成员进行一些验证,作为构建的一部分.我找不到任何定制Lombok Super Builder的解决方案.按照 lombok doc,似乎有可能.有人可以放光吗? @SuperBuilder public abstract class Parent { int x; int y; int z; int a; } @SuperBuilder public abstract class Child extends Parent { int b; int c; int d; // I want something like public static class ChildBuilder { public Child build() { Chil
14 2024-04-04
编程技术问答社区
我怎样才能从lombok builder中排除一个属性,只有当该属性为null时才能排除。
我有一个看起来像: 的用户模型类 @JsonSerialize @Getter @Setter @FieldDefaults(level = AccessLevel.PRIVATE) @Builder public class User { @Default String _dn = BASE_USER_DN; @Default String[] objectClass = {"top", "person", "organizationalPerson", "inetOrgPerson", "companyUser"}; @Default String[] cn = {"user205"}; @Default String[] sn = {"Dynamic2"}; @Default String[] username = {"LindaDynamic2"}; } 现在我想生成一个省略空字段的用户对象,
0 2024-04-04
编程技术问答社区
如何在有最终字段的抽象类上使用Lombok @SuperBuilder
给出了Lombok注释的以下类 @Data @SuperBuilder public abstract class Parent { protected final String userId; protected final Instant requestingTime; } @Data @SuperBuilder public class Child extends Parent { private final Instant beginningDate; private final Instant endingDate; private final Collection fields; } 我在Child类中的@Data注释上出现以下错误: 隐式super structor parent()是未定义的.必须明确调用另一个构造函数. 是否有一种方法可以在Child类的@Data注释上配置非默认构造函数,
2 2024-04-04
编程技术问答社区
带有lombok注解的继承得到错误
在我的项目中,Lombok用于避免为课程编写Getters和Setters. 我有两个类Child扩展Parent: @Value @Builder @AllArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) public class Parent { @Nonnull @JsonProperty("personId") private final String personId; @JsonProperty("personTag") private final String personTag; ... } 和 @Value @Builder @AllArgsConstructor @JsonIgnoreProperties(ignoreUnknown = true) public class Child extends Parent { @No
4 2024-04-04
编程技术问答社区
如何在@superbuilder上使用Lombok的网络
目前我有这三个类: @Value @NonFinal @SuperBuilder public class Parent { // Some fields } @Value @EqualsAndHashCode(callSuper = true) @SuperBuilder(toBuilder = true) public class ChildA extends Parent { // Some fields } @Value @EqualsAndHashCode(callSuper = true) @SuperBuilder(toBuilder = true) public class ChildB extends Parent { // Some fields } 我想在映射器中使用它,如下所示,以避免复制任何代码: private ChildA buildChildA(Entity entity) { Parent parent
10 2024-04-04
编程技术问答社区
如何为抽象类实现Lombok @Builder
我的课程扩展了一个抽象的课程,我不想将@Builder放在所有儿童课上. 有什么方法可以为抽象类实施Lombok @Builder? 解决方案 根本不可能.构建器在编译过程中生成了超级类,并且对最终将实施的子类别不了解. 例如,子类可以使用该实例具有有效状态的构造函数,而Lombok在生成构建器时无法有任何了解. 查看@builder文档中的示例代码.您会很快看到,将其调整为实例化未知子类是不可能的. 其他解决方案 使用新的(实验)注释@SuperBuilder使用Lombok 1.18.2(及以上)这是可能的.唯一的限制是层次结构中的每个类都必须具有@SuperBuilder注释.无法在所有子类上放置@SuperBuilder,因为Lombok在编译时不知道所有子类. 请参阅 Lombok Documentation 有关详细信息. 示例: @SuperBuilder public abstract class Superclass {
6 2024-04-04
编程技术问答社区
在Lombok中使用@Builder或@Getter注解的默认字段值
我正在使用Lombok @Builder注释,但是我希望某些String字段是可选的,默认为""以避免使用NPE.是否有捷径可寻?我找不到任何东西. 或者,如果变量为null. ,则自定义@Getter返回默认值 解决方案 从版本v1.16.16开始添加@Builder.Default. @Builder.Default让您为字段配置默认值 使用@Builder时. 示例: @Setter @Getter @Builder public class MyData { private Long id; private String name; @Builder.Default private Status status = Status.NEW; } ps:好东西,如果您不使用@Builder.Default. ,他们还会添加警告 警告:(35,22)Java:@builder会忽略初始化 完全表达.如果您希望初始化的表达式服务
2 2024-04-04
编程技术问答社区
如何在方法上使用Lombok @Builder注解
我想有一种构建测试数据的简便方法,并发现构建器模式非常适合在这里.但是,为了减少组件测试中的样板代码,我发现了 @builder @builder 成为一个不错的候选人.但是,我找不到有关如何在方法上使用它的任何文档或在线示例.我想在某种类型的工厂方法上使用@Builder,因为我无法对实现进行任何更改. 有人可以举例说明如何在方法上实际使用@Builder吗? 解决方案 在方法上使用@Builder创建Dog和Cat实例. 在此示例中 import static org.junit.Assert.*; import lombok.Builder; import lombok.Value; import org.junit.Test; @SuppressWarnings("javadoc") public class ImmutableAnimals { @Builder(builderMethodName = "dogBuilder") pu
2 2024-04-04
编程技术问答社区
Lombok builder检查非空和非空的情况
我有一个带有变量的课程,我不希望它为空或空.有没有办法使用Lombok Builder设置该属性?我可以使用@NonNull,但是我无法验证它是否为空.显然,另一个选择是编写我自己的构建器,以完成所有这些检查.例如: class Person { @NonNull private String firstName; @NonNull private String lastName; public static class PersonBuilder() { // . // . // . public Person build() { //do checks for empty etc and return object } } } 解决方案 Maxim Kirilov的答案不完整.它不检查空白/空字符串. 我以前遇到过
0 2024-04-04
编程技术问答社区
如何排除龙目岛建筑商的财产?
我有一个称为" xyzclientwrapper"的类,其具有以下结构: @Builder XYZClientWrapper{ String name; String domain; XYZClient client; } 我不想为属性生成的构建功能XYZClient client Lombok是否支持这种用例? 解决方案 是的,您可以将 @builder 放在构造函数或静态(工厂)方法上,仅包含一种您想要的字段. 披露:我是伦波克开发人员. 其他解决方案 另外,我发现将字段标记为 final , static 或 static final 指示@Builder忽略这一点字段. @Builder public class MyClass { private String myField; private final String excludeThisField = "bar"; } Lombok 1.
2 2024-04-04
编程技术问答社区
如何使Lombok'的EqualsAndHashCode与BigDecimal一起工作
我确实有一个描述的问题在这里.这就是BigDecimal的等于被打破的,在类中具有这样的字段,可以防止使用@EqualsAndHashCode.我提出的唯一解决方案是exclude这样的字段,但这当然不是最佳的. 有解决方案吗?有什么方法将自己的比较器注入字段/类型? 解决方案 我最近面临同一问题. 基本上,您会看到此行为: BigDecimal x = new BigDecimal("2"); BigDecimal y = new BigDecimal("2.00"); System.out.println(x.equals(y)); // False System.out.println(x.compareTo(y) == 0 ? "true": "false"); // True 没有一个很好的解决方案可以解决问题,但是您可以重新定义在hashcode&equals中使用的bigdecim
4 2024-03-30
编程技术问答社区
Gradle + RoboBinding与AspectJ + Lombok在一起不兼容
我想在图书馆之后在gradle上集成在Android项目中: Lombok 与axtions jobInds j 匕首 为了将robobinding与facks和android工具一起使用1.1.0我用此修复. 所有库都使用一些编译时间注释处理.我发现Lombok与extackJ不兼容.我注意到RobObinding的注释处理器正在使用APT,而Lombok仅与提供的(匕首一起使用). 我还发现没有Lombok项目正在编译和工作.您可以帮助将Lombok和Fackj与Gradle集成吗? 错误: Note: Start RoboBinding annotations processing... Note: Start RoboBinding annotations processing... Note: Start RoboBinding annotations processing... Note: Start RoboBinding annot
6 2024-03-16
编程技术问答社区
Lombok和AspectJ
我试图将Lombok与AspectJ和Maven结合使用. 所以有什么问题? 当我使用expactj时( a>),它获取来源并编译它们,而忽略了Lombok所做的更改.我跟随这个教程与此代码和facking j有效,但Lombok死于此消息: [WARNING] You aren't using a compiler supported by lombok, so lombok will not work and has been disabled. Your processor is: org.aspectj.org.eclipse.jdt.internal.compiler.apt.dispatch.BatchProcessingEnvImpl Lombok supports: sun/apple javac 1.6, ECJ 那么,有人知道如何与lombok结合起来吗? 解决方案 使用AJC处理类.
2 2024-03-16
编程技术问答社区