如何解决Lombok - 值可能尚未初始化
我正在使用 Lombok(我安装了插件并重新启动了 IDE),但是我遇到了一个奇怪的错误。这是我的代码:
@requiredArgsConstructor
@Slf4j
@Service
@Profile("parser")
public class ParserExecutorService implements CommandLineRunner {
@Value("${input.directory}")
String inputDirectory;
@Override
public void run(String... args) throws Exception {
getLogFiles();
}
public void getLogFiles() {
File inputDirectory = new File(inputDirectory);
最后一行抛出错误:
Value 'inputDirectory' might not have been initialized
但是,当我提供一个普通的字符串时,即:
File inputDirectory = new File("c:/temp");
然后我在其下方打印“inputDirectory”,然后在控制台中以适当的值显示它。
我尝试将其设置为
private final String inputDirectory;
但它也没有帮助。
解决方法
这与 lombok 没有任何关系。
File inputDirectory = new File(inputDirectory);
无论您如何切片,该行都是错误的。 inputDirectory
中的 new File(inputDirectory)
是对您在此行中声明的 inputDirectory
变量的引用。很明显,它尚未初始化。
因此,lombok 与此无关。
修复?容易 - 使用另一个名称,因为这很容易混淆。或者:File inputDirectory = new File(this.inputDirectory);
- 消除歧义,确保 javac 理解 inputDirectory
的第二个用法是指该字段,而第一个是指'请为我创建一个名为 inputDirectory 的新局部变量,该变量会隐藏该字段也命名为 inputDirectory'。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。