2016-07-23 237 views
0

我正在JSF應用程序中實現登錄過濾器。我有一個私人領域稱爲配置。儘管在init和destroy方法中引用了該字段,但Eclipse會顯示警告「字段AuthenticationFilter.config的值未使用」。我在這裏做錯了什麼,或者是Eclipse有點困惑?Eclipse中的字段未使用警告

這裏的AuthenticationFilter類:

package com.mymato.coop; 

import java.io.IOException; 

import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.annotation.WebFilter; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

@WebFilter("/restricted/*") 
public class AuthenticationFilter implements Filter { 

     private FilterConfig config; 

     public void doFilter(ServletRequest req, ServletResponse resp, 
      FilterChain chain) throws IOException, ServletException { 
     if (((HttpServletRequest) req).getSession().getAttribute(
      LoginBean.AUTH_KEY) == null) { 
      ((HttpServletResponse) resp).sendRedirect("../login.xhtml"); 
     } else { 
      chain.doFilter(req, resp); 
     } 
     } 

     public void init(FilterConfig config) throws ServletException { 
     this.config = config; 
     } 

     public void destroy() { 
     config = null; 
     } 
    } 

回答

2

初始化和銷燬​​config不是「使用」它們 - 編譯器告訴你,你有一個變量,當你不在任何地方使用它的時候,你正在浪費內存和時間初始化和銷燬​​。

1

使用字段沒有提供一個值給它。
在您的代碼中,您給該字段賦予了一個值,但是您從不使用該字段。

就你的情況而言,如果你的字段有一個值,但是這個有價值的字段永遠不會被用作另一條指令的輸入值,這似乎是無用的。該字段有一個值,但沒有人使用此值。
那麼,爲什麼要宣佈呢?而警告。

在您的代碼中config從不使用。爲什麼要宣佈它?
也許,您的班級構建正在進行中,您將需要它。
也許,您永遠不需要存儲config對象以便稍後使用它。所以你可以刪除班級中的字段。
問你自己。

1

我想,如果你只是將其指定爲null會解決你的問題

private FilterConfig config = null; 

有時候,我有這個問題了。我認爲這是因爲FilterConfig類的實現方式。

雖然由於您將指針指定給另一個指針,我不明白爲什麼會出現問題。另一個快速修復:把一些getter/setter方法,即使你可能不使用它們:d

UPDATE:還等什麼davidhxxx