我是Java新手,已经在Delphi和C#中编程了一段时间.我的问题涉及当变量声明和实例化都发生在同一方法的范围内时,变量上使用"final"关键字,该变量包含实例化类.例如
private String getDeviceID() {
//get the android device id
final TelephonyManager tm =
(TelephonyManager)GetBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
final String deviceID = tm.getDeviceId();
// log debug message containing device ID
Log.d(LOG_CAT, "getDeviceID: " + deviceID);
return deviceID;
}
Run Code Online (Sandbox Code Playgroud)
好吧所以我认为我得到的事实是"最终"变量只能分配给一次,并且由于每个声明上的"final"关键字而无法更改,但是当方法退出时,两个变量都不会超出范围吗?并再次调用该方法将简单地重新分配2个新的最终变量,这些变量在方法退出时将再次超出范围?
对我来说,在这些变量上使用"final"关键字似乎有点奇怪?除非我不理解它们如何影响方法范围内的局部变量?
有人可以告诉我"最终"对方法范围的影响是什么,或者将这些特定变量声明为最终只是某人做的蠢事?