我在使用Lombok的@Builder
注释创建POJO并在运行时将其映射到预期类型时遇到问题。
这是我的代码:
OperationResult.java
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class OperationResult<D>
{
private D data;
}
OperationResultTest.java
import org.junit.jupiter.api.Test;
public class OperationResultTest
{
@Test
public void testGenerics()
{
OperationResult<String> restult = OperationResult.builder()
.data("Test")
.build();
}
}
这会导致编译错误,说明返回的类型为OperationResult<Object>
,并且无法强制转换为预期的OperationResult<String>
类型。
是否可以使用泛型并使用Lombok的@Builder
注释知道返回的类型?
谢谢你的帮助!
要解决编译错误,您应该在调用builder()
方法时定义泛型,如下所示:
OperationResult<String> result = OperationResult.<String>builder()
.data("Test")
.build();