gpt4 book ai didi

java - 如何通过调用另一个类的方法来初始化 final 字段?

转载 作者:行者123 更新时间:2023-12-01 22:32:31 24 4
gpt4 key购买 nike

具有已声明服务的类 RestitController

@Autowired
private RestitService restitService;

我想声明一个类变量(因为它会被 RestitController 的许多方法使用)并用 RestitService 方法的结果填充它。

问题是当我写类似

的东西时
private final HashMap<K, V> map = restitService.makeMap();

我得到 NullPointerException 因为此时 restitServicenull

是否有其他方式来组织我的代码?我真的很想避免每次需要 map 时都调用该方法。

感谢您的帮助,抱歉我的英语不好。

编辑:Luigi 的解决方案很好。只有一件事:我的 HashMap 在我的代码中实际上是一个 WeakHashMap。该 map 已在 Tomcat 启动时正确加载,但一旦使用它的方法被调用,它就是空的。我将类更改为 HashMap,问题就消失了。猜想垃圾收集器是这次不及时清理的幕后黑手。

最佳答案

使用构造函数注入(inject)

private RestitService restitService;
private final HashMap<K, V> map;

@Autowired
public RestitController(RestitService restitService) {
this.restitService = restitService;
this.map = restitService.makeMap();
}

关于java - 如何通过调用另一个类的方法来初始化 final 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28944481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com