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].
答案 0 :(得分:1)
Netbeans Wiki reference应该清除你的疑问:
<强>警告强>
具有正常范围且具有最终方法的类(不适用 没有任何CDI注释且没有明确定义的类 范围,f.e。默认@Dependent范围是伪范围不正常。 ) 这是警告,因为只有“bean类型方法”不应该是最终的( 即由bean类型的注入点声明的方法。)