阅读更多

62顶
8踩

编程语言

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

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

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 条 请登录后发表评论
61 楼 Liuy.Silence 2010-06-01 16:49
是不是可以callback了
60 楼 Liuy.Silence 2010-06-01 16:48
这次变化相当大
59 楼 qiyueguxing 2010-06-01 16:20
说实话,我看不懂!
58 楼 superscorpio 2010-06-01 15:41
int i1 = #(){ return 3; }.();

这个可读性很差啊,当然这是例子,实际应用起来就好多了。
57 楼 superscorpio 2010-06-01 15:39
icanfly 写道
第一眼觉得 好恶心 ,看第二眼时觉得好多了


同感同感
56 楼 superscorpio 2010-06-01 15:39
第一眼觉得 好恶心 ,看第二眼时觉得好多了.

与40楼同感啊。
55 楼 witcheryne 2010-06-01 14:06
完全没看明白··· 有点晕!!
54 楼 ruvuoai 2010-06-01 13:13
ruvuoai 写道
引用
Java 7:Oracle 发布闭包的第一个版本

这个题目看的好别扭
53 楼 ruvuoai 2010-06-01 13:12
引用
Java 7:Oracle 发布闭包的第一个版本
52 楼 chinpom 2010-06-01 13:09
tenderghost 写道
把#替换为function就好理解了。

正解!我现在才看明白 
51 楼 chinpom 2010-06-01 13:08
写Java框架的大牛们,又有得研究了 
50 楼 Turbo 2010-06-01 13:00
看看将来怎么运用这个新特性。
49 楼 tenderghost 2010-06-01 12:34
把#替换为function就好理解了。
48 楼 wiflish 2010-06-01 12:31
很不错啊。。  
47 楼 andyzhchy 2010-06-01 11:34
还行,觉得还可以,只是刚开始有点不知所云
46 楼 faylai 2010-06-01 11:19
罗嗦的语法啊!!
45 楼 watanoeye 2010-06-01 11:18
相当不错啊,终于出来. 这语法其实还是不错的,第一眼看着比较恶心,但是第二眼发现确实不错,用过javascript的就知道了,把function改成#,够简洁,我喜欢
44 楼 szgaea 2010-06-01 11:11
更难看懂,有啥好
43 楼 szgaea 2010-06-01 11:11
又多一种写法,难呀
42 楼 caoyangx 2010-06-01 10:59
madbluesky 写道
freish 写道
tsxm 写道
哎,又是这群家伙这吵,没有闭包一帮子人天天喊着要闭包,就Java没有了,好了,现在有了,我晕,又说好好的要什么闭包啊,你去死吧,不喜欢不用不就完了




国人的特点!



国人的特点也有把"国人的特点"挂在嘴边这一点啊.

就像自己有美国绿卡一样,颇有一番超凡脱俗、鹤立鸡群、看破红尘、大义灭亲的风范。

发表评论

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

相关推荐

  • 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