这是你在苦苦找寻的资料吗

趁着Java10发布的时候,小编将整理的有用的学习资料分享给大家,希望能有帮助。 下面说说刚发布的Java10.

Java 10来了

Alt text

技术的进步一直很快,我们还在用Java7,Java10就已经推出了。

就在上周3月20号,带有109项新特性的Java10发布了,今天介绍它其中一个主要特性,Local-variable type inference

局部类型变量判断

有JS开发经验的同学对 var 肯定不陌生,Java10也引入了这个语法,

var bean = new ArrayList<Bean>();

作为一名Java撸手,我们经常要写冗长的变量声明语句,特别是在企业级代码中,为了区分功能和模块,经常会造几个单词拼起来的类,比如下面这样

InternationalAdvBean bean = new InternationalAdvBean()

因为Java是强类型语言,在Java10之前都不能避免写大段的变量声明代码。然而有其他高级语言开发经验的人会明白,其实这部分类型声明可以让编译器替我们推测。

Oracle 考虑到了这点,在最新的版本中引入了这个特性,让编译器替开发者推测变量的类型。而免去前面的强类型声明。

这个改动带来很多好处,举个例子,在企业级开发中我们经常会遇到一些坑爹的类,因为跟具体业务需求有关所以类名一言难尽… 而Java10会在编译时替我们猜出变量的类型,就像这样

var intal = new InternationalAdvBean();
var local = new LocalAdvBean();
var connection = NetworkManager.getConnection();

代码是不是变的简洁很多? 不过新的语法糖也带来了一些问题,比如上面第三个语句,我们无法一下子就得知connenction的类型,只能通过查看getConnection方法或者通过IDEA来得知它的类。

当然这个语法不是万能的,只能用在局部变量。

适用范围

· 局部变量 正如这个feature的名字所示,它只能用在声明局部变量中。更准确的说是有构造器的局部变量声明。像下面这样是不行的

var value;
value = "foo";

当然,如果作为方法类型的返回值,也是不可以,

private var getString(){}

· 循环 除了局部变量,用来作为for循环的变量声明也是允许的,

for(var name : nameList) {
    println("name: " + name);
}

这种限制的设定,主要是考虑变量在全局范围内可能被意外修改,如String被意外赋值为int,导致程序错误。

Java10 还有其他很多的特性,如果你感兴趣的话,可以点击下方链接,查看官方的文档说明。新的feature很多,这里就不一一介绍了。

Java10新特性

原文发布于微信公众号 - Android每日一讲(gh_f053f29083b9)

原文发表时间:2018-03-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏tkokof 的技术,小趣及杂念

Sweet Snippet系列之 Print Lua Table

Lua中唯一的内建数据结构就是关联数组(table),平时我们使用Lua时自然也一直在和table打交道,由于Lua中table的灵活性,使其拥有了强大的数据表...

8210
来自专栏锦小年的博客

python学习笔记1-理解Python语言

本章主要介绍一下python语言的相关知识,包括其语言类型、作为面向对象的3大特性以及5大原则,在末尾介绍了其优缺点。 python是解释型的脚本语言 解...

22090
来自专栏编程

《3》 python语言基础知识

「3」python语言基础知识 Python是一种计算机编程语言。计算机编程语言和我们日常使用的自然语言有所不同,最大的区别就是,自然语言在不同的语境下有不同的...

38990
来自专栏Java爬坑系列

【JAVA零基础入门系列】Day11 Java中的类和对象

  今天要说的是Java中两个非常重要的概念——类和对象。   什么是类,什么又是对象呢?类是对特定集合的概括描述,比如,人,这个类,外在特征上,有名字,有年龄...

210100
来自专栏逆向技术

C语言_第一讲_C语言入门

一、C语言的简介 1.C语言是一个标准,而执行标准的时候产生的自动化程序则是编译器 2.了解:1983年美国国家标准化歇会(ANSI)制定了C语言标准. C语言...

35500
来自专栏java学习

java每日一练(2017/8/20)

最新通知 ●回复"每日一练"获取以前的题目! ●【新】Android视频更新了!(回复【安卓视频】获取下载链接) ●【新】Ajax知识点视频更新了!(回复【学习...

32560
来自专栏韩伟的专栏

C#语言和JAVA、C++的对比学习

很早以前,就听说著名的BorlandDelphi开发者,去微软设计了一门伟大的语言C#。但是由于一直都在Linux上做开发,所以无缘拜会。直到最近几年,借手游大...

36140
来自专栏做全栈攻城狮

程序员带你十天快速入门Python,玩转电脑软件开发(四)

本系列文章立志于从一个已经习得一门编程语言的基础之上,全面介绍Python的相关开发过程和相关经验总结。本篇文章主要是基于上一篇的程序员带你十天快速入门Pyth...

11840
来自专栏技术总结

iOS优化_你可能没注意到的delegate

19650
来自专栏Crossin的编程教室

【Python 第23课】 if, elif, else

今天补充之前讲过的一个语句:if。为什么我跳要着讲,因为我的想法是先讲下最最基本的概念,让你能用起来,之后你熟悉了,再说些细节。 关于if,可以发送数字『7』回...

29360

扫码关注云+社区

领取腾讯云代金券