最终变量可能未被初始化。

6

我有一个方法,其中的代码如下:

final TouchableSpan touchableSpan = new TouchableSpan() {

    @Override
    public void onClick(View widget) {
        this.setPressed(true);

        String extravar = touchableSpan.getMyVar();
    }

在这行代码String extravar = touchableSpan.getMyVar();中,我得到了一个警告,即变量touchableSpan可能未被初始化。为什么会出现这种情况?
当我添加final修饰符时,就会出现此警告。在此之前,我看到的是variable is access from inner class, needs to be declared final

1
考虑如果 TouchableSpan 有一个类似于 TouchableSpan() {this.onClick(null);} 的构造函数。 - user253751
1
这绝对有些“臭味”。如果你的 onClick() 方法确实需要访问 TouchableSpan 类之外的元素;那么你应该通过构造函数提供那个“外部元素”等。你的代码极度耦合了创建新的 TouchableSpan 对象的部分……与该类的代码。不要这样做! - GhostCat
@Jägermeister,是的,我会像@Tagir建议的那样使用this.getMyVar() - Max Koretskyi
1个回答

9
你首先创建一个匿名类,然后将其赋值给最终变量。因此,在最终变量初始化之前理论上可能会调用你的onClick方法。为什么不直接使用this.getMyVar()呢?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接