在我尝试实现HttpSession时,我应该覆盖getSessionContext
方法。但它会引发不推荐使用的警告,因为该方法及其返回类型HttpSessionContext
已被弃用。
@deprecated
javadoc标记修复了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
答案 0 :(得分: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
}