我有一个用于处理 Ajax 请求的 Servlet,它以 JSON 格式给出响应。
我在网上收到此警告,如下评论。类型安全:方法 setResponseData(Object) 属于原始类型 JsonResponse。对泛型类型 JsonResponse 的引用应该参数化
我应该以另一种方式执行此操作,或者添加 SuppressWarning 注释是否安全
public class JsonResponse<T>
{
private T responseData;
private boolean success;
private String errorMessage;
// + Getters and Setters
}
public class AjaxJson extends HttpServlet
{
protected void doGet(HttpServletRequest request, HttpServletResponse response)
{
String function = request.getParameter("func");
if (function == null)
function = "";
JsonResponse<?> jsonResponse;
if (function.equals("getUsers"))
getUsers(jsonResponse);
}
private void getUsers(JsonResponse jsonResponse)
{
jsonResponse = new JsonResponse<List<User>>();
// Lets say I have a class called User
List<User> users = new ArrayList<Users>();
// get users and add to list
jsonResponse.setResponseData(users); // Warning on this line
jsonResponse.setSuccess(true);
}
}
最佳答案
您正在使用 JsonResponse
作为泛型
private void getUsers(JsonResponse jsonResponse)
修改为
private void getUsers(JsonResponse<List<User>> jsonResponse)
Java 总是警告有关使用泛型的信息,有关详细信息,请参阅 this关于SO的问题。
关于java - "References to generic type JsonResponse should be parameterized",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23102945/