X.d 笔记

小Web,大世界

0%

Java8 特性小试

Java8已经发布好几星期了,天天看新闻都是这的那的,虽然不会这么快用到实际项目上,但还是先看看有哪些东西应用上去之后会更给力的?

发布页面上极大力度强调了 J2me8 和 JavaFx8 方面的改进,但感觉市场已失,就不多关注了,简单看一下其它特性

Java8特性第一感

  1. Lambda表达式看上去很炫,使用起来应该可以结省很多class文件,如果项目里面有很多new子接口的如new Thread,new Linster等的,用Lambda的写法应该可以好看很多,且不只是好看,Lambda语法有闭包特性,貌似还可以根据上下文联想,不用声明类型。
  2. java.time(JSR310)包,由于最老使用的Date很多方法老提示过期不建议使用,Calendar用起来感觉也挺繁琐,这个包里面的一些API应该是个不错的替代品,毕竟是升级版嘛,如果你已经用了java8,建议使用这些API做为你相关时间操作的基类。
  3. functionInterface、Method and Constructor References,嗯,好吧,我是比较低端的程序员不过看例子有个forEach的方法可以循环,就像jQurey里面的forEach一样,估计可以改进很多需要循环执行的方法。虽然还没用过但应该可以确定如果用的恰当,代码应该更好看,更能体现面向对象的思想。
  4. Annotations and Access to Parameter Names,又是一个高端的玩意,其实感觉平时写代码时用到Annotation的场景都很少了,还多重注解,不过这个功能给那些写灵活度比较高的低层框架什么的有用到,也是增加可读性的。
  5. 其它杂七八,还没太了解,不多评价~~

总的来说,是一个很大的版本,改动量大,升级到java8后可以使用一些新的语法及Lambda表达式能减少你的代码行数,以及增加代码的可读性。性能也会有一点提升。

小试Java8

下载安装就不说了,安装后发现常用的eclipse里面打一些特性给我报语法错误不能编译(需要先Build Path将jre system library指到8的目录),在命令行里面java命令就可以,所以需要去下载最新的eclipse(在此更新下:4月11号发布的版本已经全面支持java8下载地址:http://eclipse.org/downloads/)
安装后,启动eclipse确认运行在jre8的环境后,就可以写代码了。

说明一下:以下代码都是转的官网DEMO,本人只是运行测试过一下,贴到这:no_mouth: ;
看JAVA8的新特性PDF版本传送门 http://www.oraclejavamagazine-digital.com/javamagazine_open/20140304#pg1

代码一:Lambda表达式(说明:在最新版的eclipse里选中一个匿名类,按ctrl+l可以将匿名类转换为lambda表达式哟*_*)
当然如果经常浏览jQuery之内的源码的话可以发现很多相似点

Collection<Person>poples;
//前代码
public void fn(){
        Collections.removeAll(poples,
                new Predicate<Person>(){
                    public boolean test(Person p){
                        return p.getAge()<18;
                    }
                }
        );
}
//使用Lambda后
public void fn(){
        Collections.removeAll(poples,p->p.getAge()<18);
}

代码二:默认接口方法,这样看起来接口搞的像父类一样了,不过多一个功能就多N种可能性,看具体场景了。

public interface TestInterFace {
    default int count(){
        return 1;
    }
}

不多写了,我也是新手,有兴趣的自己去研究吧,当然很多新特性不是为应用级别的开发者准备的,大量的还是内核变化。