【问题标题】:@Data Is Not Creating Constructor For Static Nested Class@Data 没有为静态嵌套类创建构造函数
【发布时间】:2020-10-03 15:33:24
【问题描述】:

我是 Java 世界的新手,需要您的帮助来解决一个问题。

今天我创建了一个 maven spring 项目,它给出了"The Constructor is undefined" 错误。

但我的班级有@Data 注释,我还添加了@AllArgsConstructor 来生成所有参数构造函数。尽管如此,它仍在抛出错误。

手动创建所有参数构造函数后,错误消失了。我不明白为什么我在提到注解之后还要创建一个构造函数?

下面是我的代码sn-p

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.RequiredArgsConstructor;

#import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

import javax.inject.Inject;
import javax.inject.Named;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

@Named
@Path("/")
public class HelloEndpoint {
    @Inject
    NamedParameterJdbcTemplate jdbcTemplate;

    @GET
    public String hello() {
        return "Hello World!";
    }

    @Data
    @AllArgsConstructor
    static class Result {
        private final int left;
        private final int right;
        private final long answer;
    }

    // SQL sample
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("calc")
    public Result calc(@QueryParam("left") int left, @QueryParam("right") int right) {
        MapSqlParameterSource source = new MapSqlParameterSource()
                .addValue("left", left)
                .addValue("right", right);
        return jdbcTemplate.queryForObject("SELECT :left + :right AS answer", source,
                (rs, rowNum) -> new Result(left, right, rs.getLong("answer")));
    }
}

【问题讨论】:

标签: java spring-boot maven lombok


【解决方案1】:

Lombok @Data@AllArgsConstructor 没有任何问题。

请从您的 Result 类中删除 final 键,您将能够访问 setter 和构造函数。

【讨论】:

    猜你喜欢
    • 2012-12-20
    • 1970-01-01
    • 2014-01-10
    • 2013-05-04
    • 2014-05-31
    • 2012-09-05
    • 2015-11-28
    • 2021-03-16
    • 1970-01-01
    相关资源
    最近更新 更多