如何在此代码中获取方法参数“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?***
}
};
}
答案 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