首页 > 解决方案 > Eclipse 不尊重 Lombok AllArgsConstructor、Getter 和 Setter

问题描述

我最近升级到 Eclipse 2021-03 版本(由于旧版本的一些插件问题),但现在在现有项目中使用 lombok 时遇到问题。

lombok jar 被导入到项目中:

lombo 参考库

AllArgsConstructor、Getter 和 Setter 的类导入不会在它们所需的类中抛出任何错误:

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

@AllArgsConstructor(access = AccessLevel.PROTECTED)
public class Greeting {
    
    private @Getter @Setter final long id;
    private @Getter @Setter final String content;
    
}

但是,这些注释在项目的其他任何地方都没有得到尊重。

首先,由于没有明显的构造函数,上面的“id”和“content”字段都显示为未初始化的最终字段:

最终字段未初始化

类似地尝试在其他地方构建 RestController 类会显示“构造函数未定义”错误:

import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class GreetingController {

    private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();

    @GetMapping("/greeting")
    public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
        Greeting greeting = new Greeting(counter.incrementAndGet(), String.format(template, name)); 
        System.out.println(greeting.getContent());
        return greeting;
    }
}

构造函数未定义

上述代码中的 getter 方法“getContent()”总是显示“未定义”错误(类似地,如果尝试添加隐式 setter):

吸气剂未定义

如果我将显式构造函数、getter 和 setter 添加回 Greeting 类,一切都会按预期工作:

显式构造函数和getter 工作控制器类

标签: eclipselombokgettersetter

解决方案


推荐阅读