JDK10中的局部变量类型推断var
Java是一种强类型,许多流行的编程语言都已经支持局部变量类型推断,如js,Python,C++等
JDK10可以使用var作为局部变量类型推断标识符
Local-VariableTypeInference(局部变量量类型推断),顾名思义只能用做为局部变量
注意
仅适用于局部变量量,如增强for循环的索引,传统for循环局部变量不能使用于方法形参、构造函数形参、方法返回类型或任何其他类型的变量量声明标识符var不是关键字,而是一个保留类型名称,而且不支持类或接口叫var,也不符合命名规范
用jshell试验或者IDEA
//根据推断为字符串串类型 varstrVar="springboot"; System.out.println(strVarinstanceofString); //根据10L推断long类型 varlongVar=10L; //根据true推断boolean类型 varflag=true; //varflag=Boolean.valueOf("true"); //System.out.println(flaginstanceofBoolean); //推断ArrayListvarlistVar=newArrayList (); System.out.println(listVarinstanceofArrayList); //推断Stream varstreamVar=Stream.of("aa","bb","cc"); System.out.println(streamVarinstanceofStream); if(flag){ System.out.println("这个是flag变量量,值为true"); } for(vari=0;i<10;i++){ System.out.println(i); } try(varinput=newFileInputStream("validation.txt")){}
附录:下面看下局部变量类型推断
很多人抱怨Java是一种强类型,需要引入大量的样板代码。甚至在这些情况下,给定好变量名,通常很清楚发生了什么,明显类型声明往往被认为是不必要的。许多流行的编程语言都已经支持某种形式的局部变量类型推断:如C++(auto),C#(var),Scala(var/val),Go(declarationwith:=)等。
JDK10可以使用var作为局部变量类型推断标识符,此符号仅适用于局部变量,增强for循环的索引,以及传统for循环的本地变量;它不能使用于方法形式参数,构造函数形式参数,方法返回类型,字段,catch形式参数或任何其他类型的变量声明。
标识符var不是关键字;相反,它是一个保留的类型名称。这意味着var用作变量,方法名或则包名称的代码不会受到影响;但var不能作为类或则接口的名字(但这样命名是比较罕见的,因为他违反了通常的命名约定,类和接口首字母应该大写)。
参考一下示例:
varstr="ABC";//根据推断为字符串类型 varl=10L;//根据10L推断long类型 varflag=true;//根据true推断boolean类型 varflag1=1;//这里会推断boolean类型。0表示false非0表示true varlist=newArrayList();//推断ArrayList varstream=list.stream();//推断Stream
反编译class文件:
Stringstr="ABC"; longl=10L; booleanflag=true; intflag1=true; ArrayListlist=newArrayList(); Stream stream=list.stream();
从上面示例可以看出,当我们是用复杂的方法时,不需要特意去指定他的具体类型返回,可以使用var推断出正确的数据类型,这在编码中,可以大幅减少我们对方法返回值的探究。
到此这篇关于JDK10中的局部变量类型推断var的文章就介绍到这了,更多相关JDK10局部变量类型推断var内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!