Java 变量的作用域
如何在这段代码中获取方法参数“myInteger”的值Java 变量的作用域,java,android,variables,scope,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?*** }
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?***
}
};
}
我猜这种语言应该支持闭包,在这种情况下,您只需在
onClick
侦听器中使用变量myInteger
,就可以了。。这在许多语言中都能很好地工作,但我对Java不太清楚
public void myMethod(final int myInteger) {
View.OnClickListener myClearHandler = new View.OnClickListener() {
public void onClick(View v) {
int myInteger = myInteger * 100;
}
};
}
正如John Skeet所发布的:这里的final关键字很重要。假设您只是试图阅读它,您只需要将其设置为final:
public void myMethod(final int myInteger) {
View.OnClickListener myClearHandler = new View.OnClickListener() {
public void onClick(View v) {
int foo = myInteger;
}
};
}
在Java中,匿名内部类中只能访问final
参数和局部变量
You Cannot refer to a non-final variable myInteger inside an inner class
defined in a different method
您可能会遇到此错误,因此必须像这样将其声明为final
final int myInteger
谢谢你的解决方案。给它赋值怎么样?@Gohary:你不能在Java中赋值-闭包选项有点有限。您可以使用包装器类型(例如数组),并在内部类中更改包装器的内容。这对你来说是否合适很难说。