为什么“ var”不能用于可以推断类型的非局部变量?

时间:2019-12-13 01:07:39

标签: java var local-variables

class ExampleClass {
    var a = 0; // Not Allowed
    static var b = 0; // Not Allowed 

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

在上面的示例中,ab都可以在编译时确定其类型。但是,var仅适用于可以推断类型的局部变量。对于这种情况,我是否缺少设计原因?

我已经看过这个question,它解释了var背后的用途和意图,但其答案并未意识到上述限制的原因。

1 个答案:

答案 0 :(得分:0)

一种表达方式就是根本不是为它设计的。

尽管Java 10中引入了'var',但它具有局限性。

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

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

阅读文档here