微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Lombok - 值可能尚未初始化

如何解决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 举报,一经查实,本站将立刻删除。