有没有办法将Lombok的@Builder
与Java泛型一起使用?
@Builder
public class Response<T> {
private String status;
private long total;
private List<T> page;
}
稍后在处理来自控制器的请求的服务中:
long total = getTotalItemsCount();
List<Article> page = getPage();
Response<Article> response =
Response.builder()
.status("ok")
.total(total)
.page(page); // error on this line
无法调用page
方法:
类型Response.ResponseBuilder<Object>
中的方法page(List<Object>)
不适用于参数(List<Article>
)
有什么想法吗?
1条答案
按热度按时间nbysray51#
您需要指定一个“type witness”,即下面的第二个
<Article>
部分:这其实与Lombok无关,而是Java类型推断的一个缺点,它无法通过方法调用链推断出
builder()
需要创建Article类型的Response,即使它最终被赋给了该类型的变量。类型见证是重写推理和显式指定泛型类型参数的一种方法。