NetBeans“最终方法在具有正常范围的类中声明”

时间:2014-01-09 08:32:12

标签: java java-ee cdi

NetBeans抱怨“最终方法在具有正常范围的类中声明”,此方法是从构造函数调用的,因此我将其声明为final,以避免在构造函数中发出“Overridable方法调用”。

班级中的最终公共方法有什么问题?

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 个答案:

答案 0 :(得分:1)

Netbeans Wiki reference应该清除你的疑问:

  

<强>警告

     

具有正常范围且具有最终方法的类(不适用   没有任何CDI注释且没有明确定义的类   范围,f.e。默认@Dependent范围是伪范围不正常。 )   这是警告,因为只有“bean类型方法”不应该是最终的(   即由bean类型的注入点声明的方法。)