为什么无法使用 @Tolerate lombok 实现构造函数内部的任何初始化甚至打印?
Why any initialization or even print inside the constructor with @Tolerate lombok cannot be reached?
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 会尝试生成另一个,这将导致编译错误)。
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 会尝试生成另一个,这将导致编译错误)。