Lombok 的 @Builder 与通用类型字段发生错误

Byo*_*ob 4 java generics lombok

我在使用 Lombok 注释创建 POJO@Builder并使其在运行时映射到预期类型时遇到问题。

这是我的代码:

操作结果.java

import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class OperationResult<D>
{
    private D data;
}
Run Code Online (Sandbox Code Playgroud)

操作结果测试.java

import org.junit.jupiter.api.Test;
public class OperationResultTest
{
    @Test
    public void testGenerics()
    {
        OperationResult<String> restult = OperationResult.builder()
            .data("Test")
            .build();
    }
}
Run Code Online (Sandbox Code Playgroud)

这会导致编译错误,指出返回的类型是OperationResult<Object>且无法转换为预期类型OperationResult<String>

是否可以使用泛型并使用 Lombok 的@Builder注释了解返回的类型?

感谢您的帮助!

bla*_*ide 8

要解决编译错误,您应该在调用方法时定义泛型,builder()如下所示:

OperationResult<String> result = OperationResult.<String>builder()
    .data("Test")
    .build(); 
Run Code Online (Sandbox Code Playgroud)