如何删除SuppressWarnings("未选中")

BJB*_*BJB 3 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);
Run Code Online (Sandbox Code Playgroud)

Boz*_*zho 7

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

您可以创建一个包装器方法,以便只@SuppressWarnings在一个位置:

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

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

List<String> keys = SessionUtils.getAttribute(session, uuid);
Run Code Online (Sandbox Code Playgroud)