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:局部变量类型推断相关推荐

  1. Java 10中的本地类型推断,或者如果它像鸭子一样嘎嘎叫

    最近,Oracle采用了一种新策略,即每六个月发布一次新的语言版本. 该策略假定只有每个第3版都将提供长期支持或LTS. 快速说明: 具有LTS的当前版本是Java 8: Java 9仅应在2018年 ...

  2. java全局变量和局部变量_Java 10:局部变量类型推断

    java全局变量和局部变量 In this article, we would take a deep dive at the new feature of Local-Variable Type I ...

  3. java jep_Java 10 – JEP 286:局部变量类型推断

    java jep Java 10即将发布,RC Build可在此处获得 . 可在此处找到此发行版的目标功能. 在针对Java 10的所有JEP中,开发人员社区中最有趣且最受关注的是286:Local- ...

  4. java全局变量和局部变量_Java 10 –局部变量类型推断

    java全局变量和局部变量 在本文中,我们将看到作为JEP 286的一部分提出的名为Local Variable Type Inference的Java10功能. 从Java的第一个版本开始,它是一种 ...

  5. Java 10 –局部变量类型推断

    在本文中,我们将看到作为JEP 286的一部分提出的名为Local Variable Type Inference的Java10功能. 从Java的第一个版本开始,它是一种强类型语言,在这里我们需要提 ...

  6. Java 10:局部变量类型推断

    Java 10:局部变量类型推断 在本文中,我们将深入研究Java 10中引入的局部变量类型推断的新特性.我们将讨论使用局部变量类型推断的范围和局限性. 此功能是作为JEP(JDK增强提案)的一部分提 ...

  7. Java 10 实战第 1 篇:局部变量类型推断

    现在 Java 9 被遗弃了直接升级到了 Java 10,之前也发过 Java 10 新特性的文章,现在是开始实战 Java 10 的时候了. 今天要实战的是 Java 10 中最重要的特性:局部变量 ...

  8. java 类型推理_java 11 局部变量类型推断

    什么是局部变量类型推断? var javastack = "javastack"; System.out.println(javastack); 大家看出来了,局部变量类型推断就是 ...

  9. matlab中float类型的_Java局部变量类型推断(Var类型)的26条细则

    原文链接:https://dzone.com/articles/var-work-in-progress 作者:Anghel Leonard 译者:沈歌 Java局部变量类型推断(LVTI),简称 v ...

最新文章

  1. Windows Azure真实案例:GoGrid -托管提供商拓展了服务方案,通过云平台吸引更多客户...
  2. Bootstrap系列 -- 34. 按钮下拉菜单
  3. 取消一个正在执行的异步回发
  4. .NET分布式事务处理
  5. 欧拉函数(简单介绍+例题)
  6. java udp 同一个端口实现收发_Java网络编程之UDP协议
  7. oracle中保留2位小数的写法
  8. pdb断点命令_Python使用pdb更优雅的调试代码
  9. 信息化与工业化融合的内涵、层次和方向
  10. eclipse生成ant build.xml打war包
  11. TeamTalk编译和部署(一)
  12. nginx: [emerg] could not build server_names_hash
  13. Python绘制卫星星下点轨迹图和卫星星座图
  14. word删除空格、修复“断行”
  15. php swoole 教程,PHP7安装Swoole详细教程
  16. Visual Studio Code编写html代码实现立方体相册,表白相册
  17. Matplotlib使用小技巧(Python3.5版)
  18. 圆透视变换为椭圆,其缩放比例如何求?
  19. 幕课在线办公项目笔记——day2
  20. 过期域名查询 php,域名啦过期删除域名检索系统 v1.0

热门文章

  1. 最新 Spring 系列教程,都在这了
  2. 上学的你,是不是最怕老师给家长打电话……
  3. 《四世同堂》金句摘抄(十六)
  4. Android 对话框,确定取消
  5. linux将光驱挂载到目录下,Linux操作系统下关于光驱的挂载
  6. 转:json与map互转
  7. mysql如何分析sql执行效率和进行效率优化
  8. maven(5)坐标和依赖
  9. 计算机器内存数量+引入和显示ARDS成员
  10. os引导程序boot从扇区拷贝os加载程序loader文件到内存(boot copy kernel to mem in the same method)