变量的范围

时间:2011-09-25 07:01:01

标签: java android variables scope

如何在此代码中获取方法参数“myInteger”的值。

public void myMethod(int myInteger) {
    View.OnClickListener myClearHandler = new View.OnClickListener() {
        public void onClick(View v) {
            //***How can I get the value of "myInteger" here?***
        }
    };
}

3 个答案:

答案 0 :(得分:11)

假设你只是想它,你只需要让它最终:

public void myMethod(final int myInteger) {
    View.OnClickListener myClearHandler = new View.OnClickListener() {
        public void onClick(View v) {
            int foo = myInteger;
        }
    };
}

在Java中,只能在匿名内部类中访问final个参数和局部变量。

答案 1 :(得分:3)

我猜这个语言应该支持闭包,在这种情况下你需要做的就是在你的myInteger监听器中使用变量onClick,你应该没问题。语言我不确定Java。

public void myMethod(final int myInteger) {
    View.OnClickListener myClearHandler = new View.OnClickListener() {
        public void onClick(View v) {
          int myInteger = myInteger * 100;
        }
    };
}

AS由John Skeet发布:最后的关键字在这里很重要。

答案 2 :(得分:1)

You Cannot refer to a non-final variable myInteger inside an inner class 
defined in a different method

您可能会收到此错误,因此您必须将此声明为最终

final int myInteger