遵循JEP 286:局部变量类型推断描述
我想知道,引入这种限制的原因是什么,如:
Run Code Online (Sandbox Code Playgroud)Main.java:199: error: cannot infer type for local variable k var k = { 1 , 2 }; ^ (array initializer needs an explicit target-type)
所以对我来说逻辑上它应该是:
var k = {1, 2}; // Infers int[]
var l = {1, 2L, 3}; // Infers long[]
Run Code Online (Sandbox Code Playgroud)
因为Java编译器已经可以正确地推断出数组的类型:
void decide() {
arr(1, 2, 3); // call void arr(int ...arr)
arr(1, 2L, 3); // call void arr(long ...arr)
}
void arr(int ...arr) {
}
void arr(long ...arr) {
} …Run Code Online (Sandbox Code Playgroud) var当您浏览代码并调查乍一看不清楚的代码时,这并不是很少。当开发人员使用非自描述方法名称时,您必须花一些时间来了解变量的真实类型。如果你使用 lombok 的,var你将与 lombok 紧密结合,所以我不会在我的代码中经常使用它
var在 java 中使用的有用用例是什么?
如何在 Java 17(或类似版本)中创建数组或函数列表?
预期的假设用途:
var myListOfFunctions = List.of(this::myFunction, MyClass::someOtherFunction);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
对象不是函数式接口
我打算流式传输这些函数并向它们传递相同的数据。