当你尝试使用需要从另一个类访问的变量时, 此问题非常普遍!有时, 你不知道何时会发生这种情况, 例如在cordova上使用threadPool将需要执行一个内部类:
String password = "qweqwe";
String config = "MyObject";
cordova.getThreadPool().execute(new Runnable() { // we are executing a nested class ! public void run() {try {
Session session = new Session();
session.setConfig(config);
session.setPassword(password);
} catch (Exception e) {error(e.getMessage().toString());
e.printStackTrace();
} }});
【从内部类内部访问局部变量,需要将其声明为final(java)】前面的代码将引发异常, 因为你要访问config和password, 并且它不是最终变量。
可以很容易地解决此问题, 将具有问题的变量声明为final。
// Note that you can declare final any kind of variable like objects, classes, numbers etc ...final String password = "qweqwe";
final String config = "MyObject";
cordova.getThreadPool().execute(new Runnable() { // we are executing a nested class ! public void run() {try {
Session session = new Session();
session.setConfig(config);
session.setPassword(password);
} catch (Exception e) {error(e.getMessage().toString());
e.printStackTrace();
} }});
尽管解决方案很简单, 但如果你不知道如何解决, 有时可能会非常头痛。
推荐阅读
- 如何通过JavaScript中的十六进制代码检索颜色的人名
- 当容器不可见(隐藏)时,WaveSurfer.js波形不出现
- ultraiso u盘装系统,本文教您如何制作u盘打开
- u盘不显示文件怎样办,本文教您怎样处理
- u盘变成文件夹怎样办,本文教您如何处理
- u盘怎样低格式化,本文教您如何低格式化
- 怎样把u盘当电脑内存来运用,本文教您如何设置
- 一键u盘v3.3如何安装系统,本文教您如何安装
- u盘打开盘装系统,本文教您如何安装系统