Java 在泛型类的静态类中使用泛型类型
在restful项目中,我尝试使用一个通用的响应。在这个通用响应中,有一个静态响应生成器。但是responseBuilder中的生成方法不能接受泛型类型。代码:Java 在泛型类的静态类中使用泛型类型,java,generics,generic-type-argument,Java,Generics,Generic Type Argument,在restful项目中,我尝试使用一个通用的响应。在这个通用响应中,有一个静态响应生成器。但是responseBuilder中的生成方法不能接受泛型类型。代码: public class RestResponse<T>{ private int status; private String message; private T entity; /** * */ public static class RestResponseBuilder { private
public class RestResponse<T>{
private int status;
private String message;
private T entity;
/**
*
*/
public static class RestResponseBuilder {
private final RestResponse restResponse;
public RestResponseBuilder(RestResponse resp) {
this.restResponse = resp;
}
public static RestResponseBuilder ok() {
return status(HttpServletResponse.SC_OK).msg("ok");
}
public static RestResponseBuilder status(int status) {
final RestResponse resp = new RestResponse();
resp.setStatus(status);
return new RestResponseBuilder(resp);
}
public RestResponseBuilder msg(String msg) {
this.restResponse.setMessage(msg);
return this;
}
public RestResponseBuilder entity(Object entity) {
this.restResponse.setEntity(entity);
return this;
}
public RestResponse build() {
return restResponse;
}
}
公共类重新响应{
私人身份;
私有字符串消息;
私营T实体;
/**
*
*/
公共静态类RestResponseBuilder{
私人最终回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复;
公共ResponseBuilder(Response resp){
这一点。response=resp;
}
公共静态ResponseBuilder ok(){
返回状态(HttpServletResponse.SC_OK).msg(“OK”);
}
公共静态ResponseBuilder状态(int状态){
最终重新响应=新的重新响应();
分别设置状态(状态);
返回新ResponseBuilder(resp);
}
公共ResponseBuilder消息(字符串消息){
this.response.setMessage(msg);
归还这个;
}
公共ResponseBuilder实体(对象实体){
此.response.setEntity(实体);
归还这个;
}
公共Response build(){
返回重响应;
}
}
}
当我这样使用时:
resresponsebuilder.ok().entity(null.build();
这里有一个警告:类型安全性:类型Response的表达式需要未经检查的转换才能符合
我的问题是,如何在RestResponseBuilder中添加泛型类型以避免此警告?谢谢不要使用原始类型。将生成器类也设置为泛型,将其静态方法也设置为泛型:
public class RestResponse<T> {
private int status;
private String message;
private T entity;
/**
*
*/
public static class RestResponseBuilder<T> {
private final RestResponse<T> restResponse;
public RestResponseBuilder(RestResponse<T> resp) {
this.restResponse = resp;
}
public static <T> RestResponseBuilder<T> ok() {
return RestResponseBuilder.<T>status(200).msg("ok");
}
public static <T> RestResponseBuilder<T> status(int status) {
final RestResponse<T> resp = new RestResponse<T>();
resp.status = status;
return new RestResponseBuilder<T>(resp);
}
public RestResponseBuilder<T> msg(String msg) {
this.restResponse.message = msg;
return this;
}
public RestResponseBuilder<T> entity(T entity) {
this.restResponse.entity = entity;
return this;
}
public RestResponse<T> build() {
return restResponse;
}
}
}
公共类重新响应{
私人身份;
私有字符串消息;
私营T实体;
/**
*
*/
公共静态类RestResponseBuilder{
私人最终回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复回复;
公共ResponseBuilder(Response resp){
这一点。response=resp;
}
公共静态ResponseBuilder ok(){
返回ResponseBuilder.status(200.msg)(“ok”);
}
公共静态ResponseBuilder状态(int状态){
最终重新响应=新的重新响应();
resp.status=状态;
返回新ResponseBuilder(resp);
}
公共ResponseBuilder消息(字符串消息){
this.response.message=msg;
归还这个;
}
公共ResponseBuilder实体(T实体){
this.response.entity=实体;
归还这个;
}
公共Response build(){
返回重响应;
}
}
}
为什么不使用相同的类型参数使ResponseBuilder也成为泛型?(class responsebuilder{
,public responsebuilder(response resp){
,等等)?