java - 如何删除 SuppressWarnings ("unchecked")

标签 java generics

有什么方法可以更改此代码,以便删除未检查的警告

ArrayList<String> keys = new ArrayList<String>();
// do some stuff then
// save keys in session
HttpServletRequest request = getThreadLocalRequest();
HttpSession session = request.getSession(true);
session.setAttribute(uuid, keys);

// get keys from session sometime later
@SuppressWarnings("unchecked")
ArrayList<String> keys = (ArrayList<String>) session.getAttribute(uuid);

最佳答案

你不能。 session.getAttribute() 是类型不安全的。

您可以创建一个包装器方法,这样您只有一个地方有 @SuppressWarnings:

public final class SessionUtils {
    @SuppressWarnings("unchecked")
    public static <T> T getSessionAttribute(HttpSession session, String name) {
        return (T) session.getAttribute(name);
    }
}

然后你可以使用,没有警告:

List<String> keys = SessionUtils.getAttribute(session, uuid);

关于java - 如何删除 SuppressWarnings ("unchecked"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3210909/

相关文章:

java - selenium webdriver 在 Internet Explorer 中找不到元素错误

java - 从 Jersey 的 URI 获取处理程序?

java - 什么是NullPointerException,我该如何解决?

c# 退出使用 lambda 的泛型 ForEach

generics - 在 kotlin 中,测试泛型类型的值是否实现接口(interface),然后将其用作该接口(interface)的正确方法是什么?

java - 返回时泛型如何工作?

java - CVS无法将项目下载到指定目录

Javaagent 给出 ClassNotFoundException

c# - "where T : class, new()"是什么意思?

c# - 为什么受 'Enum' 约束的泛型类型在 C# 7.3 中不符合 'struct' 的条件?