java - 为什么无法使用@Tolerate lombok 在构造函数内部进行任何初始化甚至打印?
问题描述
lombok的@Tolerate的构造函数有什么问题,为什么无法达到?我该如何解决?我想通过在构造函数块中设置一些默认键和值来初始化地图,但它不能被初始化,因为在构造函数中什么都不能到达。你能帮帮我吗?谢谢你。
import java.util.HashMap;
import lombok.Builder;
import lombok.Data;
import lombok.experimental.Tolerate;
import lombok.ToString;
@Data
@ToString(includeFieldNames = true)
@Builder
public class A {
@Builder.Default private HashMap<Integer, Double> map = new HashMap<>();
@Tolerate
public A() {
// System.out.println("Print to Test 1: ");
super();
//INTIALIZING MAP WITH DEFAULT VALUE AND KEY
System.out.println("Print to Test 2: ");
map.put(47, 0.8);
map.put(87, 0.9);
System.out.println("Print to Test 3: ");
}
public double getValue(int x, int key) {
System.out.println("test 1: " + map);
return x * map.get(key);
}
}
输出:
测试 1:{}
解决方案
@Builder
不使用无参数构造函数,它使用全参数构造函数。如果您希望您的构建器使用您自己的构造函数,请手动实现一个全参数构造函数,但不要使用它进行注释@Tolerate
(否则 Lombok 会尝试生成另一个,这将导致编译错误)。
推荐阅读
- memory-management - 内存分配失败,没有 std::bad_alloc
- java - 是否可以从java中的功能接口返回地图响应
- c# - 使用带有 C# 的 Math.Net Numerics 逐点乘以列数组和矩阵
- sql - 在 UNION 语句的子查询 B 中引用子查询 A 的结果?
- maven - 项目的 Maven 构建失败
- javascript - 将 var 从 javascript 传递给 servlett
- vba - “无效的类字符串”将Listview动态添加到多页
- php - 如果使用 codeigniter 某些列为空,则查询不显示结果
- typescript - 如何从接口访问静态类成员
- google-cloud-dataflow - 如何在 Dataflow 作业中设置服务帐号