【问题标题】:Why can't `var` be used for non-local variables whose type can be inferred? [duplicate]为什么`var`不能用于可以推断类型的非局部变量? [复制]
【发布时间】:2020-04-06 10:46:09
【问题描述】:
class ExampleClass {
    var a = 0; // Not Allowed
    static var b = 0; // Not Allowed 

    void exampleMethod() {
        var c = 3; // Allowed
    }
}

在上面的例子中,ab 都可以在编译时确定它们的类型。然而,var 只允许用于可以推断类型的局部变量。关于为什么会这样,我是否缺少设计原因?

我看过这个question,它解释了var 背后的用途和意图,但它的回答并未承认上述限制的原因。

【问题讨论】:

标签: java var local-variables


【解决方案1】:

一种说法是它根本不是为它设计的。

尽管 Java 10 中引入了“var”,但它也有其局限性。

文档明确说明何时可以使用“var”,即仅在以下情况下:

  • 使用初始化程序(即方法和初始化程序块)声明局部变量。
  • 增强 for 循环中的索引。
  • 传统 for 循环中的索引变量。
  • Try-with-resources 变量。

阅读文档here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多