Java 最终变量可能尚未初始化
我在一个方法中有这样的代码:Java 最终变量可能尚未初始化,java,android,Java,Android,我在一个方法中有这样的代码: final TouchableSpan touchableSpan = new TouchableSpan() { @Override public void onClick(View widget) { this.setPressed(true); String extravar = touchableSpan.getMyVar(); } 在这一行stringextravar=touchableSpan
final TouchableSpan touchableSpan = new TouchableSpan() {
@Override
public void onClick(View widget) {
this.setPressed(true);
String extravar = touchableSpan.getMyVar();
}
在这一行stringextravar=touchableSpan.getMyVar()代码>我收到一条警告,变量touchableSpan
可能尚未初始化。为什么会有
当我添加final
修改器时,出现了此警告。在我有变量是从内部类访问之前,需要声明为final
您首先创建一个匿名类,然后将其分配给final变量。因此,理论上可以在最终变量初始化之前调用onClick
方法。为什么不直接使用this.getMyVar()
?考虑TouchableSpan
是否有构造函数TouchableSpan(){this.onClick(null);}
或类似的方法。这肯定有一些“坏味道”。如果您的方法onClick()
确实需要访问TouchableSpan类之外的元素;然后,您应该通过构造函数提供“外部元素”。您的代码将创建新的TouchableSpan对象的部分极度耦合。。。使用该类的代码。不要那样做@Jägermeister,是的,我会按照@Tagir
的建议使用this.getMyVar()
。