个性化阅读
专注于IT技术分析

从内部类内部访问局部变量,需要将其声明为final(java)

当你尝试使用需要从另一个类访问的变量时, 此问题非常普遍!有时, 你不知道何时会发生这种情况, 例如在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();  
		}
	}
});

前面的代码将引发异常, 因为你要访问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();  
		}
	}
});

尽管解决方案很简单, 但如果你不知道如何解决, 有时可能会非常头痛。

赞(0)
未经允许不得转载:srcmini » 从内部类内部访问局部变量,需要将其声明为final(java)

评论 抢沙发

评论前必须登录!