lombok-value可能尚未初始化

k3bvogb1  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(495)

这个问题在这里已经有答案了

变量未初始化并隐藏在字段中(4个答案)
为什么java在这里抛出nullpointerexception(5个答案)
12天前关门了。
我正在使用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;

但也没用。

tjjdgumg

tjjdgumg1#

这与Lombok山毫无关系。 File inputDirectory = new File(inputDirectory); 这条线是一个错误,无论你如何切片。这个 inputDirectorynew File(inputDirectory) 是指 inputDirectory 您在此行声明的变量。显然,还没有初始化。
因此,Lombok山与此无关。
修复?简单-使用另一个名字,因为这是混淆。或者: File inputDirectory = new File(this.inputDirectory); -消除歧义,确保javac理解 inputDirectory 是指字段,而第一个是指“请为我创建一个名为inputdirectory的新局部变量,该变量对字段(也称为inputdirectory)进行阴影处理”。

相关问题