在本文中,我们将看到作为JEP 286的一部分提出的名为Local Variable Type Inference的Java10功能。 从Java的第一个版本开始,它是一种强类型语言,在这里我们需要提及每种变量数据类型。 我们所有人都感到Java是冗长的语言,并期望精确,紧凑的Java编写方式。 Java 8解决了这个问题。

Java 10在初始化程序中添加了局部变量类型推断 ,以消除冗长的内容。 例如,

jshell> Map<String,String> map = new HashMap<>();
jshell> var map = new HashMap<>(); //This is valid with Java10

这里的LHS变量数据类型将由RHS语句确定。 例如,

jshell> var i = 3;
i ==> 3 //based on RHS, the LHS datatype is int.
jshell>int i=3,j=4; //Valid Declaration
but,
jshell> var j=4,k=5; //Not a Valid Declaration
| Error:
|'var' is not allowed in a compound declaration
| var j=4,k=5;
|^

您可以将此功能用于增强的for循环和for循环。

jshell> List names = Arrays.asList("ABC","123","XYZ");
names ==> [ABC, 123, XYZ]
jshell> for(var name : names){
...> System.out.println("Name = "+ name);
...> }Name = ABC
Name = 123
Name = XYZ

我们也可以在for循环中使用局部变量类型推断。

jshell> int[] arr = {1,2,3,4};
arr ==> int[4] { 1, 2, 3, 4 }jshell> for (var i=0;i<arr.length;i++){...> System.out.println("Value = "+i);...> }
Value = 0
Value = 1
Value = 2
Value = 3

在某些情况下,此功能无效。 例如,

  • 对构造函数变量无效
  • 对实例变量无效
  • 对方法参数无效
  • 无效以分配NULL
  • 无效作为返回类型

让我们看看上述声明的示例。

jshell> public class Sample {...>    private var name = "xyz";...>    public Sample(var name) {...>     this.name=name;...>    }...>    public void printName(var name){...>      System.out.println(name);...>    }...>    public var add(int a, int b) {...>     return a+b;...>    }...> }
|  Error:
|  'var' is not allowed here
|     private var name = "xyz"; //Instance variable
|             ^-^
|  Error:
|  'var' is not allowed here
|     public Sample(var name) { //Constructor variable
|                   ^-^
|  Error:
|  'var' is not allowed here
|     public void printName(var name){ //Method parameter
|                           ^-^
|  Error:
|  'var' is not allowed here
|     public var add(int a, int b) { //Method return type
|            ^-^
jshell> public class Sample {...>    ...>    public static void main(String[] args) {...>     var s = null;...>    }...> }
|  Error:
|  cannot infer type for local variable s
|    (variable initializer is 'null')
|      var s = null;
|      ^-----------^

当我们从较低版本迁移到Java10时,我们不必担心本地变量类型推断,因为它具有向后兼容性。

在接下来的文章中,我们将学习另一个主题。 直到敬请期待!

翻译自: https://www.javacodegeeks.com/2018/06/local-variable-type-inference.html

Java 10 –局部变量类型推断相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. Java中的类型推断和lambda表达式

    文章目录 简介 类型的显示使用 Stream中的类型推断 类型推断中变量名字的重要性 类型推断对性能的影响 类型推断的限制 总结 简介 java是强类型的编程语言,每个java中使用到的变量都需要定义 ...

最新文章

  1. JSP中的重定向和请求转发以及它们的区别
  2. IIS6下PHP的ISAPI和FastCGI性能比较 期待ii7
  3. CTFHub-Web-信息泄露
  4. 青客宝团队redis内部分享ppt
  5. lintcode:买卖股票的最佳时机 III
  6. 自旋锁:pthread_spinlock_t,互斥锁:pthread_mutex_t,条件变量:pthread_cond_t,读写锁:pthread_rwlock_t
  7. ajax ashx session 为空,jquery ajax post 方式ashx文件取不到值。
  8. 32位算术逻辑运算单元alu设计_依据基本原理构建现代计算机(二)—— ALU
  9. 阻塞与非阻塞 异步 与同步
  10. php医院数据库设计,检查我的数据库设计/ PHP / MySQL
  11. [ROS]1 小乌龟
  12. Ubuntu下c语言IDE学习
  13. 用 Python 硬核从头实现一个神经网络
  14. vscode任务栏图标突然不显示
  15. 蚂蚁金服校招一面有感
  16. K-mer特征提取one-hot编码
  17. 运动式蓝牙耳机什么牌子好、运动式蓝牙耳机推荐
  18. 皮尔逊相关系数实现相似K线及其性能优化
  19. mysql 5.166修改字符集_mysql字符集问题
  20. IDEA2020下载安装

热门文章

  1. 形象的解释神经网络激活函数的作用是什么
  2. JAVA多线程和并发面试问题
  3. 获取一个 Byte 的各个 Bit 值
  4. 什么是G1垃圾回收算法
  5. Java对象引用四个级别(强、软、弱、虚)
  6. maven安装遇到的坑
  7. 人脸检测源码facedetection
  8. 2020蓝桥杯省赛---java---B---6(成绩分析)
  9. mmall工程生成dao层的插件出错了出错了 自动生成mapper 的插件出错了
  10. redis创建集群报错can‘t connect to node 192.168.163.203