2014-01-09 25 views
1

NetBeans抱怨說」最終方法在具有正常範圍的類中聲明「,此方法從構造函數中調用,因此我聲明它是最終的以避免發出」Overridable方法調用在構造函數中「。NetBeans最終方法在類中聲明爲正常範圍「

課堂上最後的公共方法有什麼問題?

import java.io.Serializable; 
import javax.enterprise.context.SessionScoped; 
import javax.inject.Named; 
@Named 
@SessionScoped 
public class A implements Serializable 
{ 
    boolean initialized; 
    public A() 
    { 
     setInitialized(true); 
    } 

    public final void setInitialized(boolean b) 
    { 
     this.initialized = b; 
    } 
} 

編輯:從編譯器的投訴是不同的措辭,但聲明是一樣的:

Normal scoped bean class A is not proxyable because the type is final or 
it contains a final method public final void A.setInitialized(boolean) - 
Managed Bean [class test.so.A] with qualifiers [@Default @Any @Named]. 
+1

請向我們顯示您的代碼 –

+1

請給我們您的代碼。 – Rugal

+0

我認爲[this reference](http://docs.jboss.org/weld/reference/1.1.0.Final/en-US/html_single/#d0e1429)解釋了爲什麼你不應該這樣做(你不能做一個代理覆蓋最終方法的行爲)。 –

回答

1

Netbeans Wiki reference應該清楚你的疑惑:

警告

CLAS (不適用 到沒有任何CDI註釋的類,也沒有明確定義的 作用域,f.e.)。默認@Dependent範圍是僞範圍不正常。 ) 這是警告,因爲只有「bean類型方法」不應該是最終的( ,即由注入點的bean類型聲明的方法)。

+3

我可能是唯一一個,但我不明白這個警告的一個字。你能用自己的話說出爲什麼應該避免這種情況嗎? –

+0

你不是唯一的一個。具體來說OP的結構違反了JLS的哪一部分? – Bathsheba

+0

我不明白上面的內容,「這是警告,因爲只有」bean類型方法「不應該是最終的(即通過bean類型的注入點聲明的方法)。」聽起來很糟糕的措辭給我。 – dendini