2015年公司发展迅速,于是大量的时间花费在招聘上。招聘工程师,必然需要了解候选人的技术能力,尤其是对自己使用的技术的了解程度。优秀的工程师都需要知其然,也知其所以然,否则遇到技术难题就只能呵呵了。而对于面试官来讲,如果想要了解候选人的真实技术水平,自己也需要对技术有足够的了解。最近两年由于琐事越来越多,更多的时间是关注大数据的一些技术的发展,可是一些曾经自己很关注的技术却有些生疏了,比如Java语言和Java虚拟机的一些发展情况。2016年,决定每周花些时间来了解更为基础的技术,这两年往外倒的多,需要冲些电进来了。Java 9已经快出来了,不过Java 8我却还没有足够的了解,先从Java 8开始,逐渐重试基础知识。
Java Interface的变化
在面试一些初级程序员时,我经常会问他们关于Java Interface和abstract class的一些区别。在Java 8以前,Interface中只能存在抽象方法,可是在Java 8之中,Interface有了变化,引入了Default Methods,所谓默认方法。在Interface中,可以将具体的方法的实现用default 关键字来修饰,这样就可以实现多继承了。例如,我定义一个IHelloWorld接口,其中sbSayHello这个方法我希望所有实现这个接口的类都可以继承使用,我就可以这样定义接口:
其中sayHello会要求继承的类去实现它,而sbSayHello则可以被直接实现的类继承使用。
比如:
另外,对于接口,我也可以匿名对象,例如:
这个时候,Java 8中会建议用Lambda
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
达式来进行匿名的实现,因为Lambda表达式更为简洁。
Lambda表达式
随着Spark越来越火爆,Scala语言也有了越来越多的使用者,Scala语言作为
函数
excel方差函数excelsd函数已知函数 2 f x m x mx m 2 1 4 2拉格朗日函数pdf函数公式下载
式编程语言,函数是一等公民。而Java作为一个具有超过20年历史的老语言,也在与时俱进的引入新的特性,比如Lambda表达式。在Java当中,lambda表达式本质上就是一个你们方法的实现,只不过更简洁。比如,上边的匿名函数的实现,就可以变为:
这个表达方法已经很像Scala语言的实现了。在Java 8中,如果要用Lambda表达式,需要它的目标类型是函数接口(Functional Interface)。具体来说,一个Interface只能有一个抽象方法,比如我前面的IHelloWorld就只有一个抽象方法sayHello。为了保证接口是函数接口,Java 8引入了一个叫做FunctionalInterface的Annotation,用于修饰接口,比如前面接口的定义可以改为:
这个时候,你如果尝试再增加一个抽象接口,编译器就会报错。
Method Reference
Java 8引入了一个方法引用method reference的概念,方法引用通过"::"来表达,比如如下的例子:
另外,方法引用可以引用对象方法以及类的构造方法。比如引用对象方法:
定义一个工厂接口DeviceFactory:
在生成Device的时候,可以用如下的代码:
Java 8的Lambda表达式、方法引用等等特性使得Java开始逐渐的支持了函数式语言的一些特性,而Java 8的实现中,有一些已经支持的函数接口,从而方便之处Lambda表达式,后边再逐一进行研究。
温馨推荐
您可前往百度文库小程序
享受更优阅读体验
不去了
立即体验