var类型标识符的使用是有限制的。
- 您只能将它用于在方法、构造函数和初始化程序块中声明的局部变量。
- var不能用于字段,不能用于方法或构造函数参数。
- 声明变量时,编译器必须能够选择类型。由于null没有类型,变量必须有一个初始化器。
遵循这些限制,以下类无法编译,因为var无法将字段或方法参数用作类型标识符。
public class User { private var name = "Sue"; public void setName(var name) { this.name = name; } }
以下代码也是如此。
在这种情况下,编译器无法猜测 的真实类型,message因为缺少初始化程序。
public String greetings(int message) { var greetings; if (message == 0) { greetings = "morning"; } else { greetings = "afternoon"; } return "Good " + greetings; }