Java中是否有“var”关键字?

Java中是否有“var”关键字?,java,android,Java,Android,我的问题可能看起来很愚蠢。。。在我看来,这真的很愚蠢。 但在关于android的视频教程中,在java代码中看到var关键字,我感到震惊 所以我的问题是,在java代码中如何可能有var,它在java中意味着什么,在java中我们不能有没有特定类型的引用 您看到的教程使用的是Xamarin,这意味着他们正在使用C语言编写Android应用程序,而不是Java语言 在Java10之前的Java中没有var关键字 在Java10及更高版本中,您可以使用var在方法和特定范围中定义局部变量 一些例子:

我的问题可能看起来很愚蠢。。。在我看来,这真的很愚蠢。 但在关于android的视频教程中,在java代码中看到var关键字,我感到震惊


所以我的问题是,在java代码中如何可能有var,它在java中意味着什么,在java中我们不能有没有特定类型的引用

您看到的教程使用的是Xamarin,这意味着他们正在使用C语言编写Android应用程序,而不是Java语言

在Java10之前的Java中没有var关键字

在Java10及更高版本中,您可以使用var在方法和特定范围中定义局部变量

一些例子:

var list = new ArrayList<String>();
list.add("Hello world");

Consumer<String> reader = s -> {
    var data = s.split("\\s+"); //data is of type String[]
    //use data...
    //...
}
作为方法中的参数。范例

class MyClass {
    private var foo = 5; //compile error
}
public void method(var foo) { } //compile error
//类似职位:

JEP-JDK增强方案

JEP286:局部变量类型推断

作者布莱恩·戈茨

// Goals:
var list = new ArrayList<String>();  // infers ArrayList<String>
var stream = list.stream();          // infers Stream<String>

实际上,既然JDK10于2018/03/20发布,java支持使用var关键字执行局部变量类型推断

这意味着,与其这样做,不如: 字符串myName=steeltoe

您只需执行var myName=steeltoe

Java随后会推断它是一个字符串,因此与以前的版本相当,只需较少的键入


应该注意的是,这不会中断静态类型,因为java仍然将myName设置为字符串,因此不允许通过将其分配给整数来中断静态类型,如myName=1234

但是Android不支持Java10功能。