【发布时间】:2016-02-06 00:16:33
【问题描述】:
我的外部方法中有一个局部变量,我想从匿名内部类进行更改。我该怎么做?
我尝试了使用 here 描述的单元素数组的解决方案
public class outerClass{
static public void outerMethod(Interface interface) {
final String[] variable = new String[1];
new Thread(new Runnable() {
@Override
public void run() {
variable[0] = "Hello";
Log.i("test", variable[0]); // Works, prints "Hello"
}
}).start();
Log.i("test", variable[0]); // Doesn't work, null string
}
}
以及使用here描述的支架的解决方案
public class outerClass{
static public void outerMethod(Interface interface) {
final Holder<String> variable = new Holder<String>;
new Thread(new Runnable() {
@Override
public void run() {
variable.held = "Hello";
Log.i("test", variable.held); // Works, prints "Hello"
}
}).start();
Log.i("test", variable.held); // Doesn't work, null string
}
}
class Holder<String> {
public String held;
}
但由于某种原因,两者都不适用于我的情况。
这可能是相关的,但不同的是我的外部方法是静态的。我还在这里简化了我的代码,原始代码是用于 Android 上 Retrofit 库中的匿名回调类。
【问题讨论】:
-
您是否正在创建并启动
Thread来运行您的Runnable?
标签: java anonymous-class