阅读更多

102顶
15踩

编程语言

原创新闻 Java 7的主要变化

2009-11-25 12:13 by 资深编辑 wutao0603 评论(125) 有39477人浏览

Devoxx 大会结束在几天前结束了,一位与会者对此次大会的重要内容进行了总结,他提到Java 7的主要变化如下:

 

1.对collections的支持

 

List<String> list = new ArrayList<String>();
list.add("item");
String item = list.get(0);

Set<String> set = new HashSet<String>();
set.add("item");

Map<String, Integer> map = new HashMap<String, Integer>();
map.put("key", 1);
int value = map.get("key");

 现在你还可以:

 

List<String> list = ["item"];
String item = list[0];

Set<String> set = {"item"};

Map<String, Integer> map = {"key" : 1};
int value = map["key"];

 

 

2.自动资源管理

 

BufferedReader br = new BufferedReader(new FileReader(path));
try {
   return br.readLine();
} finally {
   br.close();
}

 becomes:

 

try (BufferedReader br = new BufferedReader(new FileReader(path)) {
   return br.readLine();
}

You can declare more than one resource to close:

try (
   InputStream in = new FileInputStream(src);
   OutputStream out = new FileOutputStream(dest))
{
 // code
}

 

3.对通用实例创建(diamond)的type引用进行了改进

 

 

Map<String, List<String>> anagrams = new HashMap<String, List<String>>();

 becomes:

 

Map<String, List<String>> anagrams = new HashMap<>();

4.数值可加下划线

 

int one_million = 1_000_000;

  

5.在switch中可使用string

 

String s = ...
switch(s) {
 case "quux":
    processQuux(s);
    // fall-through

  case "foo":
  case "bar":
    processFooOrBar(s);
    break;

  case "baz":
     processBaz(s);
    // fall-through

  default:
    processDefault(s);
    break;
}

 

6.二进制文字

 

int binary = 0b1001_1001;

  

7.简化了可变参数方法的调用

 

当程序员试图使用一个不可具体化的可变参数并调用一个*varargs* (可变)方法时,编辑器会生成一个“非安全操作”的警告。详情查看

 


来自: joejag
102
15
评论 共 125 条 请登录后发表评论
85 楼 RednaxelaFX 2009-11-27 17:34
kenvin 写道
不是说7要整合使用OSGI。怎么没有看到?

首先,这帖的内容相当老,之前就已经有人发过内容几乎一样的帖:JDK7在语法上的几处小变化
其次,这帖的内容只涉及Java的语法改动。直接支持OSGi跟语法没有多少关系,所以这帖没写也正常。不过在Project Jigsaw的阴影下JDK7到底对OSGi会是个什么态度呢……
84 楼 kenvin 2009-11-27 17:19
不是说7要整合使用OSGI。怎么没有看到?
83 楼 astarring 2009-11-27 17:16
还不错,可以简化程序员的工作!不过java 7 兼容以前的代码吗?
82 楼 oatn 2009-11-27 16:03
switch支持String 功能太有用了,
集合功能也不错。 起码语义读起来没那么繁琐了
81 楼 李军武 2009-11-27 15:51
改了半天也没出什么东西,语法之类的东西只是延迟到了编译阶段了.
应该出些实质性的东西.
80 楼 dracularking 2009-11-27 15:24
不错啊使用起来更方便
79 楼 jeff312 2009-11-27 13:45
tetsu.soh 写道
个人是欢迎这些新语法特性的。不过变化太大,不知道企业买不买帐。
说到底,语法上的改进只是在讨好程序员,而用什么程序开发是boss说了算。


这些改进确实很好,虽然看起来只是小修补,代码却好看多了,说实话:
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();

这种写法实在有些蠢。

至于try的那个改进我觉得boss会认真考虑的,因为很多企业总喜欢用工资不高的初哥,而初哥经常犯的毛病就是忘记资源回收。
78 楼 liubaoshan 2009-11-27 12:58
java又有新东西了!
77 楼 mazzystar 2009-11-27 11:49
感觉很不错
76 楼 cjt 2009-11-27 11:33
我还在用5.0,呵呵!
java的初衷是简单,现在不知道是简单了,还是……
75 楼 zjumty 2009-11-27 11:17
企业级应用对Java的要求一向很保守, 我现在还在用java1.4开发, 等用到Java7, 不知道要过多少年.
74 楼 accphc 2009-11-27 10:03
Java6还没有用到呢。
73 楼 accphc 2009-11-27 10:03
喜欢第五个功能,第一个模仿C#。
语言越来越强大,也越来越复杂。
72 楼 wangying95599 2009-11-27 09:44
不管他更新学的是什么语言的特性,越来越完善是一个好的语言发展的必经之路。希望java越来越强大
71 楼 RednaxelaFX 2009-11-27 02:54
mikeandmore 写道
ray_linn 写道
RednaxelaFX 写道
wuxi7227 写道
ray_linn 写道
linliangyi2007 写道
越来越RUBY了,哈哈,肉饼大大看了会喜欢的



越来越ruby ?...全是C#抄袭来的,c#1.0就有了


python 出得最早,LIST MAP的这些写法 都是copy python的。 还有比python早也是这样写法的吗?

Python在80年代后期才发源,而ML在80年就已经有高效的编译器实现了。ML里的list语法也是方括号包围、逗号分隔的……Python还算不上古董


呵呵,using是借鉴C#的。

我觉得C++比C#要早。。。

ray_linn大大想说的using是对应Java 7里ARM提案的try关键字的用法,不是using的namespace用法……C++的话这问题基本上就RAII解决
70 楼 mikeandmore 2009-11-27 02:40
ray_linn 写道
RednaxelaFX 写道
wuxi7227 写道
ray_linn 写道
linliangyi2007 写道
越来越RUBY了,哈哈,肉饼大大看了会喜欢的



越来越ruby ?...全是C#抄袭来的,c#1.0就有了


python 出得最早,LIST MAP的这些写法 都是copy python的。 还有比python早也是这样写法的吗?

Python在80年代后期才发源,而ML在80年就已经有高效的编译器实现了。ML里的list语法也是方括号包围、逗号分隔的……Python还算不上古董


呵呵,using是借鉴C#的。

我觉得C++比C#要早。。。
69 楼 spllot 2009-11-26 17:52
不是说JAVA7中还加入了闭包吗
68 楼 overkill 2009-11-26 17:42
在switch中可使用string,这个功能不错,避免写很多if-else.
67 楼 wgj830823 2009-11-26 17:01
闭包 也有了
66 楼 ray_linn 2009-11-26 16:34
RednaxelaFX 写道
wuxi7227 写道
ray_linn 写道
linliangyi2007 写道
越来越RUBY了,哈哈,肉饼大大看了会喜欢的



越来越ruby ?...全是C#抄袭来的,c#1.0就有了


python 出得最早,LIST MAP的这些写法 都是copy python的。 还有比python早也是这样写法的吗?

Python在80年代后期才发源,而ML在80年就已经有高效的编译器实现了。ML里的list语法也是方括号包围、逗号分隔的……Python还算不上古董


呵呵,using是借鉴C#的。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 软件测试的意义.ppt

    软件测试的意义 软件测试(英语:Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。

  • 软件测试的目的

    软件测试的目的每个人的理解不一样,但大体如下: 1、为什么要做测试需求分析? a:1 漏测试分析:网上问题(前期测试有漏洞) :测试分析设计不足(其实就是没有想到,大致占到60%);测试环境不具备;测试进度压力,无时间测试 b:有些问题无法考虑到,考虑不周全(测试视角太狭窄) c:如何站在客户的立场来测试(用户场景分析、用户体验) 2、测试的目的 测试的目的是想以最少的人力,物力和时间找出软件中存...

  • 软件测试之测试意义

    测试人员跟踪需求、验证质量、提交缺陷的同时也促进了开发人员技术的提升,在这个过程中牵扯到项目流程管理的问题,一个优秀的测试在这个过程中会建立一套完成的体系来提高整个团队的工作效率从而来降低开发成本进而把控产品质量,但需明确的是,软件的质量不只是测试人员来把关,最终质量好坏是整个团队的结果。测试是不可穷尽的,测试人员不可能发现系统中所有的缺陷,每个版本发布前也不可能保证所有已知的缺陷都会得到修复,所以反复测试是为了发现更多的缺陷,预防风险。4)一个成功的测试是发现了至今未发现的错误的测试。

  • 测试定义、流程、以及分类

    测试理论 1.测试的定义 就是寻找软件中存在的BUG 2.出现BUG的原因 20%来源于代码 80%需求不明确 产品需求经常变更 3.判定bug的依据: 需求文档 原型图 不相符合的错误类型 难以理解 不易使用 运行缓慢。。 4.产生bug的原因归纳为: (1) 需求解释有错误; (2) 用户需求定义错误; (3) 需求记录错误; (4) 设计说明有误; (5) 编码说明有误; (6) 程序代码有误; (7) 数据输入有误; (8) 测试错误; (9) 问题修改不正确 测试流程 需求评审 1从用户体验角度

  • 软件测试对于个人的意义

    优点: 1、有助于了解整个软件的各个功能,及时解决客户问题; 2、软件测站在客户的角度思考如何设计软件,软件如何为客户服务; 3、软件测试有助于了解客户的需求; 4、软件测试有助于对软件的全面功能的了解;(软件这么多功能,也是很辛苦啊) 缺点: 1、工作内容偏简单化,数量化; 2、工作内容不似开发那样,可以学习新的框架,API,协议,工具等; 3、工作成效不直观,不受重视; 4、换个产品,功能变了,还要重新学习;开发则更偏向于底层,发展更好; ...

  • 我认为的软件测试

    1.对于测试的认识 软件测试行业是一个新兴行业,尤其是在国内,软测已经不是以前单纯依附在软件开发过程中 一个可有可无的角色,而是发展到足以成为专门的行业。各公司相继成立测试部门,软件测试网站的增多,甚至于测试外包的出现,表明软件测试开始得到越来越受到人们的重视。 2.什么是软件测试 软件测试是指软件产品在使用的过程中我们对它进行所有的检查,测试相关的功能能否正常运行以及有无出现按一些不能控的...

  • 软件测试中的α、β、λ测试

    地球我来啦,同志们,今天分享关于α、β、λ测试的有关内容。一、α、β、λ常用来表示软件测试过程中的三个阶段: α是第一阶段,一般只供内部测试使用; alpha测试 (由用户、测试人员、开发人员共同参与的内部测试) β是第二个阶段,已经消除了软件中大部分的不完善之处,但仍有可能还存在缺陷和漏洞,一般只提供给特定的用户群来测试使用; beta测试 (内测后的公测,交给最终用户测试 公司外部展开的测

  • 有关我对软件测试以及软件测试开发的认识

        就目前来说,软件测试在软件开发过程中,受到越来越多的重视,它贯穿于整个开发过程中,各种软件互联网公司都在大量招收软件测试有关人员。     前2天,我看见百度的招聘信息,它主要招收的软件测试开发人员,这就说明了,现在随着社会的进步,科技的发展,以及自动化测试的成为主流的这一种趋势,现在公司所需要的对软件测试人员的要求大幅度提高,它不仅仅要求我们有测试能力,还需要兼备软件的开发能力,这就需要...

  • 对软件测试的认识(理论基础知识)

    软件测试基础 1:什么是软件缺陷? a.软件未达到产品设计规范表明的功能; b.软件出现了产品设计规范指明不会出现的错误; c.软件功能超出产品设计规范指明的范围; d.软件未达到产品设计规范虽未指出但应达到的目标; e.软件测试人员认为软件难以理解、不易使用、运行速度慢,或者最终用户认为不好。 2:为什么会出现软件缺陷? a.需求变化     b.设计错误

  • 【软件测试系列】关于软件测试的重要性

    软件测试的重要性(待续……)

  • 软件测试了解篇

    一、什么是软件测试 验证软件是否满足用户需求 二、软件测试和研发的区别 (1)软件测试与调试的区别 目的 参与角色 执行阶段 测试 发现程序中的缺陷 调试 定位并且解决程序中的问题 开发 ...

  • 我对软件测试的理解以及我的职业规划

    很少分配时间用来思考自己的职业规划问题,今天总算让自己的心静了下来,去考虑我要从事什么工作,以及我要怎么去向这方面努力,还有就是我到底喜不喜欢这份工作。要做好职业规划首先要想好我正在进行的培训的事情,软件测试,我也算是接触了一个月的时间,期间学写了linux系统,学习了oracle,学习了c语言,这说明软件测试不仅仅是理论的,也是需要了解it基础知识的,也就是说测试不是简单...

  • 认识软件测试

    认识软件测试一 软件测试的定义和分类1.1 定义1.2分类一 软件测试的定义及分类 一 软件测试的定义和分类 1.1 定义 通俗说:软件测试就是在软件投入运行之前,对软件需求分析,设计规格说明书和编码实现的最终审查,它是软件质量保证的关键步骤。 IEEE给出的定义是:使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清楚预期结果与实际结果之间的差别。 除了上述两种定义方法之外,还有其他一些定义,这些定义并没有对错之分只是进行定义的角度不同。 这里有一个关于软件

  • 软件测试的重要性与必要性,软件测试的目的和意义

    目的:1)软件测试是为了发现错误而执行程序的过程。2)测试是为了证明程序有错,而不是证明程序无错。(发现错误不是唯一目的)3)一个好的测试用例在于它发现至今未发现的错误。4)一个成功的测试是发现了至今未发现的错误的测试。测试是不可穷尽的,测试人员不可能发现系统中所有的缺陷,每个版本发布前也不可能保证所有已知的缺陷都会得到修复,所以反复测试是为了发现更多的缺陷,预防风险。测试人员跟踪需求、验证质量、...

  • 我了解的软件测试基本概念

    题目汇总 共293道题 目录 题目汇总 1 一. 技术类型题目: 4 二. 测试话术: 9 1.什么是兼容性测试?兼容性测试侧重哪些方面? 9 2.正交表测试用例设计方法的特点是什么? 10 3.简述一下缺陷的生命周期? 10 3.画出软件测试的V模型图。 10 4.您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 10 5.请以您以往的实际工作为例...

  • 测试软件

    day_1 文章目录day_1@[toc]软件缺陷产生的原因软件测试和缺陷修复的代价软件测试定义如何快速融入新团队测试人员的基本素质测试流程软件测试分类软件测试的原则软件的开发模式软件生命周期模型 软件缺陷产生的原因 (1)需求解释错误 (2)用户需求定义错误 (3)需求记录错误 (4)设计说明有误 (5)编码说明有误 (6)程序代码有误 (7)数据输入有误 (8)测试错误 (9)问题修改不正确 (10)不正确的结果是由于其他的缺陷而产生 软件测试和缺陷修复的代价 缺陷发现的越早越好 软件测试定义 狭.

  • 软件测试目的和作用

    测试人员会告诉你他们的主要工作是发现bug。但我们知道测试永远不能发现所有的bug,而且不可能去测试软件质量。许多领域内专家也极力主张软件测试的目的主要是在于发现软件错误,希望在软件开发生命周期内尽可能早的发现尽可能多得bug。这种认识源于我们没有办法对软件进行完全测试,即对程序的正确性进行完全证明,但遗憾的是,我们至今还没有使用的技术做到这一点。包括E.W.Dijkstra指出“测试只能证明程序

  • 如何理解软件测试

    1、软件测试的定义是什么?   在规定的条件下对软件进行操作,从而发现软件的错误,并对软件质量进行评估的一个过程。 2、软件测试的目的是什么?   不仅仅为了发现软件的缺陷,而且也要对软件质量进行度量和评估,从而提高软件的质量。 3、什么是软件质量?   即与需求相一致的程度。需求分为:明确的需求(明确叙述的功能和性能需求、明确描述的开发标准);隐含需求(行业的基本标准)。 4、软件测试有什么原则?   1、从用户需求出发,进行测试;   2、尽可能早的、持续地进行测试;   3、为测试做好终止条件,达到即

  • 软件测试的意义

    什么是软件

  • 从这几点谈谈软件测试的重要性

    从这几点谈谈软件测试的重要性随着市场对软件质量要求的不断提高,软件测试愈来愈受到重视。介绍了软件测试的重要性,对几种软件测试技术进行了论述。软件测试的意义在于:软件测试在软件研制中的作用软件测试的意义在于:a.发现软件错误;b.有效定从这几点谈谈软件测试的重要性随着市场对软件质量要求的不断提高,软件测试愈来愈受到重视。介绍了软件测试的重要性,对几种软件测试技术进行了论述。软件测试的意义在于:          软件测试在软件研制中的作用软件测试的意义在于:a.    发现软件错误;b.    有效定义和实现软件成分由低层到高层的组装过程;c.    验证软件是否满足任务书和系统定义文档所规定的

Global site tag (gtag.js) - Google Analytics