Java10 本地变量类型推断
JEP 286 − 本地变量类型推断
本地变量类型推断是从Java 10开始可用的语言中最明显的变化之一。它允许使用var来定义一个变量,而无需指定其类型。编译器根据提供的值推断变量的类型。此类型推断仅限于局部变量。
旧的声明局部变量的方式。
String name = "Welcome to tutorialspoint.com";
声明局部变量的新方法。
var name = "Welcome to tutorialspoint.com";
现在编译器通过检查提供的值,将name变量的类型推断为String类型。
值得注意的几点
- 对于成员变量、方法参数和返回值,没有类型推断。
-
局部变量在声明时应该被初始化,否则编译器将无法推断并抛出错误。
-
局部变量的推断可以在循环语句的初始化块中使用。
-
没有运行时开销。由于编译器根据提供的值推断类型,因此没有性能损失。
-
没有动态类型更改。一旦推断出局部变量的类型,就不能更改。
-
通过使用局部变量类型推断,可以减少复杂的样板代码。
Map<Integer, String> mapNames = new HashMap<>();
var mapNames1 = new HashMap<Integer, String>();
示例
以下程序展示了在JAVA 10中使用局部变量类型推断的示例。
import java.util.List;
public class Tester {
public static void main(String[] args) {
var names = List.of("Julie", "Robert", "Chris", "Joseph");
for (var name : names) {
System.out.println(name);
}
System.out.println("");
for (var i = 0; i < names.size(); i++) {
System.out.println(names.get(i));
}
}
}
输出
它将打印以下输出。
Julie
Robert
Chris
Joseph
Julie
Robert
Chris
Joseph