阅读更多

62顶
8踩

编程语言

原创新闻 Java 7:Oracle 发布闭包的第一个版本

2010-05-31 18:14 by 资深编辑 wutao0603 评论(101) 有31484人浏览

2010年5月23号,Java度过了它的第15个生日!

 

近日,Oracle又发布了一个令人振奋的消息,发布了实现闭包的第一个版本,在测试案例中,Java compiler syntax 发生了变化。你可以在此查看测试案例

 

支持以下新特性:

  • Function types syntax
  • Function types subtyping
  • Full support for lambda expression of type 1 and 2
  • Inference of thrown types/return type in a lambda
  • Lambda conversion using rules specified in v0.1.5 draft
  • Support references to ‘this’ (both explicit and implicit)
  • Translation using method handles

 

函数类型在默认情况下不会启动,必须使用XDallowFunctionTypes来启用。

 

type 1 lambda表达式示例:  

int i1 = #()(3).(); //i1 = 3
Integer i2 = #()(3).(); //i2 = 3
int i3 = #(int x)( x + 1 ).(3); //i3 = 4
int i4 = #(Number x)(x.intValue()).(new Float(3.0f)); //i4 = 3

 

type 2 : 

int i1 = #(){ return 3; }.(); //i1 = 3
Integer i2 = #(){ return 3; }.(); //i2 = 3
int i3 = #(int x){ return x + 1; }.(3); //i3 = 4
int i4 = #(Number x){ return x.intValue(); }.(new Float(3.0f)); //i4 = 3

 

点击查看原文详情:http://www.baptiste-wicht.com/2010/05/oracle-pushes-a-first-version-of-closures/

62
8
评论 共 101 条 请登录后发表评论
101 楼 zhouzhao21 2010-06-12 17:10
philix 写道
说"不喜欢就别用"的人是不负责的.
我不喜欢,可以不用,但慢慢别人在用了,就会逼着我去学这些特性, 因为不学就看不懂它们的代码.

所以,这个东西一但进了标准,就没办法回避

这句话讲的很有道理
100 楼 CrystalBear 2010-06-09 08:40
philix 写道
java越来越垃圾了. 范型也是一坨屎. 重走C++的失败之路

java采用伪泛型(擦除),主要是考虑兼容性。
99 楼 bittercoffee 2010-06-07 17:00
kleenestar 写道
coding时多了一种选择,挺好

多了一种选择真是好事吗? 我想只能是痛苦.
98 楼 bittercoffee 2010-06-07 16:58
philix 写道
java越来越垃圾了. 范型也是一坨屎. 重走C++的失败之路

泛型是个很好的东西, 不知道你是否真的掌握了. 良好的架构设计加上泛型让你的代码很清楚, 抛弃那些类型转换及参数类型的不确定.
97 楼 robot18ok 2010-06-06 18:01
欢迎想走的同志换语言,说不定少了一个对手
96 楼 philix 2010-06-06 02:03
说"不喜欢就别用"的人是不负责的.
我不喜欢,可以不用,但慢慢别人在用了,就会逼着我去学这些特性, 因为不学就看不懂它们的代码.

所以,这个东西一但进了标准,就没办法回避
95 楼 philix 2010-06-06 01:58
java越来越垃圾了. 范型也是一坨屎. 重走C++的失败之路
94 楼 philix 2010-06-06 01:56
还是groovy中的闭包看着舒服
93 楼 廖明华 2010-06-03 16:23
开发工具简单、便捷才是硬道理。
92 楼 kleenestar 2010-06-03 15:51
coding时多了一种选择,挺好
91 楼 bittercoffee 2010-06-03 11:34
语法太别扭了, 想放弃java了. 闭包有什么好处啊?
90 楼 fight_bird 2010-06-03 11:34
Java别走ActionScript那种繁复的歧路,简洁才是正道。

Java应该区分核心语言特性和扩展语言特性,默认JVM下坚持只支持核心特性,扩展模式下自选,这样可以兼顾。
89 楼 murainwood 2010-06-03 10:52
adaikiss 写道
tsxm 写道
哎,又是这群家伙这吵,没有闭包一帮子人天天喊着要闭包,就Java没有了,好了,现在有了,我晕,又说好好的要什么闭包啊,你去死吧,不喜欢不用不就完了

悲剧的娃,'喊要闭包的一帮子人'不一定是'又说好好的要什么闭包啊'的人...

众口难调
88 楼 zhangyou1010 2010-06-03 08:18
jdk6的新特新还没用过呢,7就出来了。
87 楼 fireflyc 2010-06-02 22:25
真是取其精华,取其糟粕啊。哪位说什么闭包是优秀的啊?那些伟大的sun工程师跑到了oracle之后依然在继续着自己的“传奇”生涯吗?你们还可以更傻一些。取更多的糟粕
86 楼 llflst 2010-06-02 22:06
功力还不够深啊
85 楼 kisbo110 2010-06-02 15:47
我现在还用j2ee1.4呢,哎  落后啊
84 楼 jasongreen 2010-06-02 15:42
闭包有必要这么幸福吗?
83 楼 hite 2010-06-02 14:23
robot18ok 写道
yes,yes,我看懂了

  吃那个什么药了?
82 楼 myzhijie 2010-06-02 14:04
searchNew 写道
方便是挺方便的,但是()太多啦,容易让人晕

没有C#中的和谐...

是呀 呵呵 不过可以先少用,熟练了再多用

发表评论

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

相关推荐

  • Jive中的分頁處理

           google_ad_client = "pub-5666005562649995";google_ad_width = 468;google_ad_height = 60;google_ad_format = "468x60_as";google_ad_type = "text_im

  • oracle java 7_Oracle发布首个Java 7闭包版本

    虽然关于Java 7闭包一直波澜不断,开发者们也对Java是否真的需要引入闭包存在争议,但Oracle还是在两天前放出了Java 7闭包的第一个版本。我们可以在测试项目中看到Java编译器语法规则的演变。点此查看测试项目。下面...

  • 曾经的sun现在的oracle发布第一个java 7闭包版本

    闭包版本支持以下新特性: *函数类型的语法 *函数类型子类型 *全面支持拉姆达的1型和2的表达 *抛出类型的推理/在一个lambda返回类型 *拉姆达转换使用规则草案中指定 v0.1.5 *支持引用’this’(包括显性和隐性...

  • oracle java 7_Oracle提交Java 7 和Java 8规格

    即将来临的Java版本致力于减少冗余代码,增加多核性能,并且催生出动态脚本语言周二一名Oracle官员详细介绍了Oracle提交的版本7和版本8的Java标准版的技术规格。在考虑之中的技术由Java社区委员会(Java Community ...

  • java支持闭包_Java 7最新版-支持闭包

    将未来赌在Java上的Oracle绝对不乎放置Java不管的,而不管处于任何目的,Oracle都会不遗余力的推动Java甚至是...而最近Oracle用行动证明了Java在其心目中的地位,Oracle于不久前发布了基于Java 7的闭包实现的第一个...

  • Oracle推出首个Java 7闭包版本

    【51CTO快译】虽然关于Java 7闭包一直波澜不断,开发者们也对Java是否真的需要引入闭包存在争议,但Oracle还是在两天前放出了Java 7闭包的第一个版本。我们可以在测试项目中看到Java编译器语法规则的演变。点此...

  • java闭包和lambda关系_浅谈Java 7的闭包与Lambda表达式之优劣

    前几天Oracle推出了Java 7官方的闭包与Lambda表达式的第一个实现,这基本上也是最终在正式版中的样式了。看了这个实现之后,我的第一感觉便是“丑”,当然不排除这是因为看惯了其他语言中实现的缘故。后来再仔细看了...

  • java lambda::_Java中的Lambda:深入分析

    java lambda:: 通过不收购Sun Microsystems的方式,Oracle可以从事严肃的工作来振兴许多人认为停滞的语言。 对许多人的要求很高的是能够传递独立于类的函数的能力,因此这些函数可用作其他函数或方法调用的参数。 ...

  • java 1.7 lambda,浅谈Java 7的闭包与Lambda表达式之优劣(1)

    前几天Oracle推出了Java 7官方的闭包与Lambda表达式的第一个实现,这基本上也是最终在正式版中的样式了。看了这个实现之后,我的第一感觉便是“丑”,当然不排除这是因为看惯了其他语言中实现的缘故。后来再仔细看了...

  • oracle里的java代码,oracle中编写java代码

    使用sql语句创建create or replace and compile java source named test_java_source aspackage test_java_source;public class Test{public void Test(){}//都是static的public static String sayHello(){return ...

  • java中闭包_Java 7中的闭包-语言的新时代开始了吗?

    java中闭包 Java 5:泛型 (Java 5: Generics) When Sun announced their plans to include the Generics in Java 5, a lot of the ...

  • 深入理解Java Lambda表达式,匿名函数,闭包

    第一个“x”是函数的参数,第二个是函数体。 自由与约束变量 在函数λx.x中,“x”被称为约束变量,因为它既在函数体中又是参数。 在λx.y中,“y”被称为自由变量,因为它从未事先声明过。 因为函数可以是其他函数...

  • Java版本历史

    Java语言自JDK1.0版本以来经历了许多次更新,也在基本程序库中增加了大量的类别和包。从J2SE 1.4开始,Java语言的变动由 Java Community Process(JCP)管理,JCP使用Java规范请求(Java Specification Requests,...

  • java lambda使用_Java8:Lambdas(二)学习怎样去使用lambda表达式

    原文链接作者:Ted Neward 译者:赵峰Java SE 8的发布很快就到了。伴随着它来的不仅仅是新的语言lambda表达式(同样被称为闭包或匿名方法)——伴随着一些语言特性支持——更重要的是API和library的增强将会使传统的...

  • java匿名包,java 匿名内部类 js 闭包

    最近在看js,看到closure(闭包)这一块儿的时候就想到了 java的匿名内部类 两者都有涉及到变量/参数的引用问题。先说java的匿名内部类,他的定义我就不多做说明了,可以参考地址...

  • java lambda::_书评:精通Lambda:多核世界中的Java编程

    从版本8开始,λ编程(lambda编程)终于在Java世界中引入。此功能将在很大程度上改变Java开发人员的编程方式以及针对样板代码的新“武器”。 Java 8通过引入新的Stream API,大部分已将函数式编程应用在Collections...

  • 地下迷宫探索 java_Java 8:探索可能性

    从嵌入式到云,使用Java 8实现。 涵盖Java SE 8和Java ME 8的Java 8可能是Java平台最... Java SE 8中的Compact Profiles允许开发人员仅使用平台的一部分,这是朝着Java SE和Java ME融合迈出的重要一步。 同时,对J...

  • 开始java的第一堂课~

    首先先安装上一个jdk ,此为java的开发环境,接下来安装一个编写java的工具, 在下面我会给大家介绍, 。桌面上至少有什么东西呢?首先必不可少的就是 一种编程工具(也叫做IDE)接下来就是一种查询单词的工具 ,...

  • 查询数据库后是返回ResultSet还是返回Collection?

    既然我们把数据库访问封装起来了,那么如果查询数据库返回的是一系列结果,比如我们从数据库中得到所有人的用户名,然后在Jsp页面显示出来。这里就有一个普遍疑问,我这个javabean是返回ResultSet到Jsp中还是Collection?我曾经有段时间图省事,直接返回ResultSet,然后在我的jsp页面中是大量的ResultSet遍历。这其实还是将数据层和显示层混淆在一起。在EJB CMP中,

  • JavaMail中文附件的处理方法

    JavaMail能很好的支持中文,但在测试过程中发现使用JavaMail发带有中文文件名的 附件时,文件名是乱码,经测试与查看源文件发现,是在JavaMail包里的一个写邮件 的方法没有考虑国际化因素,对双字节或多字节的字符没有考虑。即在 com.sun.mail.util.LineOutputStream调用 com.sun.mail.util.ASCIIUtility.getBytes(Str

Global site tag (gtag.js) - Google Analytics