Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 最终变量可能尚未初始化_Java_Android - Fatal编程技术网

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()