Java10新特性
局部变量类型推断
Applicabilityand impact
Scanningthe OpenJDK code base for local variable declarations, we found that 13% cannotbe written using var
, sincethere is no initializer, the initializer has the null type, or (rarely) theinitializer requires a target type. Among the remaining local variabledeclarations:
94%have an initializer with the exact type present in the source code (63% ofcases with parameterized types)
5%have an initializer with some sharper denotable type (29% of cases withparameterized types)
1%have an initializer with a type that mentions a capture variable (7% of caseswith parameterized types)
<1%have an initializer with an anonymous class type or intersection type (same forcases with parameterized types)
嗯,开头就英文,头疼?不管看不看得懂,请君往下看!!!
重要的事情说三遍,往下看,往下看,往下看!
上面的英文都是从Java官网复制下来的
先说说它的适用范围(上面英文总结):
适用:1.局部变量初始化
2. for循环内部索引变量
3. 传统的for循环声明变量
代码实现:
不适用:1.方法参数
2.构造函数参数
3.方法返回类型
4.类成员变量类型
代码实现:
代码看完,是不是有点像JS里面的感觉?
其他语言对局部变量类型推断的支持(C++——auto,C#——var,Scala——var/val)
看完这么多,局部类型变量到底是什么:英文又来了~~啦啦 嘻嘻
有道翻译君(展现实力):|>
局部变量类型推断
局部变量类型推断减少了使用范围仅包含单个Java模块的变量所需的一些开销。作为一种设计原则,Java要求显式地键入所有变量——也就是说,程序员必须非常清楚地声明变量将包含的数据类型。这确保使用变量的每个模块或类以相同的方式解释其内容。这个被称为“类型安全”的原则最小化了运行时错误。但是,在单个模块内部可以严格使用更多的变量,比如循环迭代器,或者在复杂计算中包含中间值的变量。显式地输入这些变量不仅耗时,而且可能会导致程序员的人为错误。使用本地变量类型推断,程序员只需使用特殊语法启动变量,然后Java编译器从上下文推断类型。更少的代码加上更少的错误等于更快乐的开发人员。
优缺点:
优:减少代码的冗长。
缺:数据类型不明确
说了这么多,应该明白了吧。
其实我说的没几句 ~O(∩_∩)O哈哈~. 借鉴借鉴~