Java 10 –局部变量类型推断
在本文中,我们将看到作为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 –局部变量类型推断相关推荐
- java全局变量和局部变量_Java 10 –局部变量类型推断
java全局变量和局部变量 在本文中,我们将看到作为JEP 286的一部分提出的名为Local Variable Type Inference的Java10功能. 从Java的第一个版本开始,它是一种 ...
- Java 10 实战第 1 篇:局部变量类型推断
现在 Java 9 被遗弃了直接升级到了 Java 10,之前也发过 Java 10 新特性的文章,现在是开始实战 Java 10 的时候了. 今天要实战的是 Java 10 中最重要的特性:局部变量 ...
- 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 10 – JEP 286:局部变量类型推断
Java 10即将发布,RC Build可在此处获得 . 可在此处找到此发行版的目标功能. 在针对Java 10的所有JEP中,开发人员社区中最有趣且最受关注的是286:Local-Variable ...
- Java 10:局部变量类型推断
Java 10:局部变量类型推断 在本文中,我们将深入研究Java 10中引入的局部变量类型推断的新特性.我们将讨论使用局部变量类型推断的范围和局限性. 此功能是作为JEP(JDK增强提案)的一部分提 ...
- 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 ...
- Java中的类型推断和lambda表达式
文章目录 简介 类型的显示使用 Stream中的类型推断 类型推断中变量名字的重要性 类型推断对性能的影响 类型推断的限制 总结 简介 java是强类型的编程语言,每个java中使用到的变量都需要定义 ...
最新文章
- JSP中的重定向和请求转发以及它们的区别
- IIS6下PHP的ISAPI和FastCGI性能比较 期待ii7
- CTFHub-Web-信息泄露
- 青客宝团队redis内部分享ppt
- lintcode:买卖股票的最佳时机 III
- 自旋锁:pthread_spinlock_t,互斥锁:pthread_mutex_t,条件变量:pthread_cond_t,读写锁:pthread_rwlock_t
- ajax ashx session 为空,jquery ajax post 方式ashx文件取不到值。
- 32位算术逻辑运算单元alu设计_依据基本原理构建现代计算机(二)—— ALU
- 阻塞与非阻塞 异步 与同步
- php医院数据库设计,检查我的数据库设计/ PHP / MySQL
- [ROS]1 小乌龟
- Ubuntu下c语言IDE学习
- 用 Python 硬核从头实现一个神经网络
- vscode任务栏图标突然不显示
- 蚂蚁金服校招一面有感
- K-mer特征提取one-hot编码
- 运动式蓝牙耳机什么牌子好、运动式蓝牙耳机推荐
- 皮尔逊相关系数实现相似K线及其性能优化
- mysql 5.166修改字符集_mysql字符集问题
- IDEA2020下载安装