1.面向对象编程和函数式编程
interface IMessage1 {
public void fun();//追加了普通方法,有方法体了
}
public class test {
public static void main(String [] args) {
IMessage1 iMessage1 = new IMessage1() { //没有实现接口,直接使用匿名内部类,好处是节约了一个文件,但是也变得难以阅读。
@Override
public void fun() {
System.out.println("chixiangle");
}
};
iMessage1.fun();
}
}
当使用函数式编程时代码可以这么写
@FunctionalInterface
interface IMessage1 {
public void fun();//追加了普通方法,有方法体了
}
public class test {
public static void main(String [] args) {
IMessage1 iMessage1 = () -> System.out.println("chixiangle");
iMessage1.fun();
}
}
但是只有在接口只有一个方法的时候可以这么写。在使用的地方会出错。在jdk中加了一个@FunctionalInterface注解 来声明这是一个函数接口只有一个方法
有参数和多行时可以这样写
interface IMessage1 {
public int fun(int a ,int b);//追加了普通方法,有方法体了
}
public class test {
public static void main(String [] args) {
IMessage1 iMessage1 = (a, b) -> a +b;
iMessage1.fun(9,10); //只有一行时可以这样写 ,这就是lambda表达式
/*IMessage1 iMessage1 = (a, b) -> {
System.out.println(a + "," + b);
return a +b;
};
iMessage1.fun(9,10);*/
}
}
目前,在行业内专门有一家公司对lambda表达式的开发,做了一套自己的函数式编程语言,也就是scala语言。
这种语言用来做分析比较方便。