java8的lamda表达式

package JUC;

import java.util.Arrays;
import java.util.List;

import javax.security.auth.x500.X500Principal;

@FunctionalInterface
//接口也是一种特殊的类,如果该接口用于lamda表达式进行函数式编程,
//则只能有一个方法,@FunctionalInterface可标可不标,如果有两个函数,则会出错!!!
interface MyFo{//函数式接口
    //public void print();
    public int add(int x,int y);
    
    //java8中接口可以有默认的方法实现,可以有n多个!!!!!!!打破接口只能定义不能实现的规则!!!!!
    default int dev1(int x,int y) {
        return x*y;
    }
    
    default int dev2(int x1,int y1) {
        return x1*y1;
    }
    
//    private int dev3(int x1,int y1) {//java不可以,java9可以用private实现了
//        return x1*y1;
//    }
    
    
    //java8中接口可以有静态的方法实现,可以有n多个!!!!!!!打破接口只能定义不能实现的规则!!!!!
    //这时要用类名调用!!!!!!!!!!!
    public static void name() {
        System.out.println("wo is yexin");
    }
    
    public static void name2(String a) {
        System.out.println("wo is :"+a);
    }
    
    
}

/**
 * 1.函数式编程
 * 简而言之:Lamda表达式就是匿名类不类的简写方式
 * lamda表达式格式:(形参列表) -> {方法体实现}!!!!!!!
 * @author YEXIN
 *
 */
public class LamdaDemo {
    public static void main(String[] args) {
        
//        //接口方式
//        MyFo myFo = new MyFo() {//接口也是一种特殊的类,在new的时候要实现它的匿名类部类方法。
//            
//            @Override
//            public void print() {//匿名类部类必须实现接口的方法
//                
//                System.out.println("*****hello yeixn");
//            }
//
//            public void name() {
//                System.out.println("helo");                
//            }
//        };
//        
//        myFo.print();
//-----------------------------------------------------------------------------        
        //lamda表达式
        MyFo myFo = (int x,int y) -> {return x+y;};//lamda表达式格式:(形参列表) -> {方法体实现}
        int res = myFo.add(4, 6);
        System.out.println(res);
        
        System.out.println(myFo.dev1(10, 5));//调用默认的方法实现,不使用{return x+y;}方法体了!!!!!!
        
        MyFo.name2("jkhkj");
        MyFo.name();
        
//-----------------------------------------------------------------------------
        List list  = Arrays.asList(1,2,3,4,5,6,8);
//        for (Integer emlment : list) {
//            System.out.println(emlment);
//        }
        
        //java8的增强for循环加强了
        list.forEach(System.out::println);
        
    }
}

==========================================================

10
50
wo is :jkhkj
wo is yexin
1
2
3
4
5
6
8

你可能感兴趣的:(Java)