Java 10 – JEP 286:局部变量类型推断
Java 10即将发布,RC Build可在此处获得 。 可在此处找到此发行版的目标功能。 在针对Java 10的所有JEP中,开发人员社区中最有趣且最受关注的是286:Local-Variable Type Inference 。
什么是局部变量类型推断?
我们在Java 8中看到了Diamond运算符,它允许我们编写
List<Map data = new ArrayList<Map();
如
List<Map data = new ArrayList();
根据LHS的类型推断RHS的类型。 尽管在Java 9中已修复的匿名内部类中,此方法确实起作用。
Java 10更进一步,说明如下:
List<Map data = new ArrayList();
可以写成:
var data = new ArrayList();
局部变量类型推断允许开发人员跳过与局部变量(在方法定义,初始化块,for循环以及其他块(如if-else中定义的变量)中定义的变量)关联的类型声明,并且类型由JDK推断。
在哪里可以使用?
让我创建一个示例类,以显示使用局部变量推断var
的不同方法:
public class LegalLocalVarInferenceDemo{//in a static/instance initialization blockstatic {var anotherName = "Sanaulla";System.out.println("Hello, " + anotherName);}public static void main(String[] args){//as a local variablevar name = "Mohamed Sanualla";System.out.println("Hello " + name);var data = new ArrayList();data.add(Map.of("key1", "value1", "key2", "value2"));data.add(Map.of("key11", "value11", "key22", "value22"));data.add("hello");System.out.println(data);System.out.println("********** As iteration variable in enhanced for-loop ***************");for ( var object : data){System.out.println(String.format("%s of type %s", object, object.getClass().getName()));}System.out.println("********** As looping index in for-loop ***************");for ( var i = 0 ; i < data.size(); i++ ){var object = data.get(i);System.out.println(String.format("%s of type %s", object, object.getClass().getName()));}System.out.println("********** As a return value from another method ***************");var anInteger = someAnotherMethod();System.out.println("someAnotherMethod returned " + anInteger);}//As a return value in a methodpublic static Integer someAnotherMethod(){System.out.println("someAnotherMethod called");var returnObj = 12;return returnObj;}}
无法使用的地方?
让我创建另一个示例类,该类显示如何无法使用var
:
public class IllegalLocalVarInferenceDemo{//Not permitted in class fields//var someProperty;//Not allowed as parameter for constructor// public LocalVarInferenceDemo(var param1){// }public static void main(String[] args){//Not allowed in catch parameter// try{// //some operations// }catch(var ex){// }}//Not permitted below//public static void someMethod(var param1, var param2){// System.out.println("Some method called");//}//Not permitted in method return type// public static var someAnotherMethod2(){// System.out.println("someAnotherMethod called");// var returnObj = 12;// return returnObj;// }
}
样例代码
该示例可以在GitHub上找到
翻译自: https://www.javacodegeeks.com/2018/03/java-10-jep-286-local-variable-type-inference.html
Java 10 – JEP 286:局部变量类型推断相关推荐
- Java 10中的本地类型推断,或者如果它像鸭子一样嘎嘎叫
最近,Oracle采用了一种新策略,即每六个月发布一次新的语言版本. 该策略假定只有每个第3版都将提供长期支持或LTS. 快速说明: 具有LTS的当前版本是Java 8: Java 9仅应在2018年 ...
- java全局变量和局部变量_Java 10:局部变量类型推断
java全局变量和局部变量 In this article, we would take a deep dive at the new feature of Local-Variable Type I ...
- java jep_Java 10 – JEP 286:局部变量类型推断
java jep Java 10即将发布,RC Build可在此处获得 . 可在此处找到此发行版的目标功能. 在针对Java 10的所有JEP中,开发人员社区中最有趣且最受关注的是286:Local- ...
- java全局变量和局部变量_Java 10 –局部变量类型推断
java全局变量和局部变量 在本文中,我们将看到作为JEP 286的一部分提出的名为Local Variable Type Inference的Java10功能. 从Java的第一个版本开始,它是一种 ...
- Java 10 –局部变量类型推断
在本文中,我们将看到作为JEP 286的一部分提出的名为Local Variable Type Inference的Java10功能. 从Java的第一个版本开始,它是一种强类型语言,在这里我们需要提 ...
- Java 10:局部变量类型推断
Java 10:局部变量类型推断 在本文中,我们将深入研究Java 10中引入的局部变量类型推断的新特性.我们将讨论使用局部变量类型推断的范围和局限性. 此功能是作为JEP(JDK增强提案)的一部分提 ...
- Java 10 实战第 1 篇:局部变量类型推断
现在 Java 9 被遗弃了直接升级到了 Java 10,之前也发过 Java 10 新特性的文章,现在是开始实战 Java 10 的时候了. 今天要实战的是 Java 10 中最重要的特性:局部变量 ...
- java 类型推理_java 11 局部变量类型推断
什么是局部变量类型推断? var javastack = "javastack"; System.out.println(javastack); 大家看出来了,局部变量类型推断就是 ...
- matlab中float类型的_Java局部变量类型推断(Var类型)的26条细则
原文链接:https://dzone.com/articles/var-work-in-progress 作者:Anghel Leonard 译者:沈歌 Java局部变量类型推断(LVTI),简称 v ...
最新文章
- Windows Azure真实案例:GoGrid -托管提供商拓展了服务方案,通过云平台吸引更多客户...
- Bootstrap系列 -- 34. 按钮下拉菜单
- 取消一个正在执行的异步回发
- .NET分布式事务处理
- 欧拉函数(简单介绍+例题)
- java udp 同一个端口实现收发_Java网络编程之UDP协议
- oracle中保留2位小数的写法
- pdb断点命令_Python使用pdb更优雅的调试代码
- 信息化与工业化融合的内涵、层次和方向
- eclipse生成ant build.xml打war包
- TeamTalk编译和部署(一)
- nginx: [emerg] could not build server_names_hash
- Python绘制卫星星下点轨迹图和卫星星座图
- word删除空格、修复“断行”
- php swoole 教程,PHP7安装Swoole详细教程
- Visual Studio Code编写html代码实现立方体相册,表白相册
- Matplotlib使用小技巧(Python3.5版)
- 圆透视变换为椭圆,其缩放比例如何求?
- 幕课在线办公项目笔记——day2
- 过期域名查询 php,域名啦过期删除域名检索系统 v1.0