2

当我尝试实现 HttpSession 时,我应该重写getSessionContext方法。但它会导致不推荐使用的警告,因为该方法及其返回类型HttpSessionContext已被弃用。

@deprecatedjavadoc 标记修复了对定义的警告,getSessionContext但无法修复对HttpSessionContext. 在导入之前放置@SuppressWarnings会导致编译错误。

如何修复这两个警告?

代码:

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionContext;

public class MyServletSession implements HttpSession {
    // ...

    /**
     * @deprecated
     */
    @Override
    public HttpSessionContext getSessionContext() {
        throw new UnsupportedOperationException();
    }

    // ...
}

警告:

$ javac -Xlint:deprecation -cp /path/to/javax.servlet-api-3.0.1.jar MyServletSession.java
MyServletSession.java:5: warning: [deprecation] HttpSessionContext in javax.servlet.http has been deprecated
import javax.servlet.http.HttpSessionContext;
                                     ^
1 warning
4

1 回答 1

1

如果您真的需要实现自己的HttpSession. 并禁止弃用警告,我相信正确的编译器参数是-Xlint:-deprecation. 注意-前面deprecation

编辑:这将删除所有弃用警告,因此如果您试图仅禁止该类中的警告,它可能不适合。相反,我发现这对我有用:

// Note, no import of javax.servlet.http.HttpSessionContext
import javax.servlet.http.HttpSession;

@SuppressWarnings("deprecation")
public class MySession implements HttpSession {

    /**
     * This javadoc comment, along with the fully qualified name of HttpSessionContex in the method signature seems to do the trick.
     * @deprecated
     */
    public javax.servlet.http.HttpSessionContext getSessionContext() {
    }

    //... All your other methods
}
于 2013-04-01T07:09:37.220 回答