为什么不能将方法的局部变量声明为final?

发布于 2024-08-19 03:35:17 字数 68 浏览 6 评论 0原文

我想知道为什么方法的本地变量不能声明为最终变量。 有什么具体原因吗?

这是否意味着Java中没有局部常量?

I like to know why Variables that are local to a method cannot be declared final.
Is there any specific reason?

Does it mean are there no local constants in Java?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

烈酒灼喉 2024-08-26 03:35:17

它们可以被宣布为最终的。你的实际问题出在其他地方。

They can be declared final. Your actual problem lies somewhere else.

任性一次 2024-08-26 03:35:17

来自 Java 规范 §4.5.4

变量可以声明为final。最终变量只能分配一次。如果分配了最终变量,则会出现编译时错误,除非在分配之前立即明确未分配该变量(第 16 节)。

换句话说,这是完全合法的。此外,使用 final 被认为是最佳实践 尽可能使用局部变量。

一致地使用final和局部变量(在适当的时候)也很有用。 [...] 一种合理的方法是仅当方法中至少有一个非 Final 局部变量时才对局部变量使用 Final;这有助于快速区分非最终局部变量和其他局部变量。

From the Java specification §4.5.4:

A variable can be declared final. A final variable may only be assigned to once. It is a compile time error if a final variable is assigned to unless it is definitely unassigned (§16) immediately prior to the assignment.

In other words, it is perfectly legal. Moreover, it is considered a best practice to use final with local variables as much as possible.

Consistently using final with local variables (when appropriate) can be useful as well. [...] A reasonable approach is to use final for local variables only if there is at least one non-final local variable in the method; this serves to quickly distinguish the non-final local variables from the others.

孤寂小茶 2024-08-26 03:35:17

谁说我们不能。我们可以声明。您可能对不能在方法中使用的 static 感到困惑。

who said we cannot. we can declare. You might have confused with static which cannot be used in methods.

此岸叶落 2024-08-26 03:35:17

愚蠢的错误!可能您错过了提及引用变量,并且 Eclipse 会抱怨“令牌“final”上的语法错误,无效类型”。
示例 final Pojo = new Pojo(); 缺少引用变量,但如果 final Pojo pojo = new Pojo(); 则可以完美工作
我确信当你在 SO 提出问题时,你并没有意识到那里存在那个愚蠢的错误。

Silly mistake! Probably you missed mentioning the reference variable and eclipse complains like 'Syntax error on token "final", invalid Type'.
Example final Pojo = new Pojo(); which has missing reference variable while it perfectly works if final Pojo pojo = new Pojo();
I am sure when you asked question here at SO by that time you didn't realize that silly mistake there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文