JDK1.8新特性及代碼

https://blog.csdn.net/haiyoung/article/details/52693212

https://www.cnblogs.com/jacksontao/p/8608291.html

https://blog.csdn.net/op134972/article/details/76408237?locationNum=1&fps=1

/**
 函數式接口
*/
package com.star.wechat;

@FunctionalInterface  
public interface Jdk8Interface {	
	
	public void method(String s1,String s2);
}
package com.star.wechat;

import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

@FunctionalInterface  // 新特性2 函數式接口 只允許一個抽象方法
public interface Demo {

	public void oldMethod(String la);

	 public default void test2(){  // 新特性1 接口內的default方法 ,可定義方法體
	        System.out.println("我是新特性1");
    }
	 
	 public static void main(String[] args) {
		/*new Demo() {

			@Override
			public void oldMethod() {
				System.out.println("老方法");
			}
		}.oldMethod();*/
		 /**
		  * lambda 1
		  */
		 Demo d = la -> System.out.println("真牛皮"+la);  // 新特性3 lambda表達式
		// Demo d = (la) -> System.out.println("真牛皮"+la);  // 參數可以用()括號括起來, 當有參數時可以去掉括號;
		 d.oldMethod("搞一下");
		 /**
		  * lambda 2
		  */
		Runnable r1 = () -> System.out.println("線程開始");   // 無參數時必須加上括號
		//new Thread(r1).start();
		new Thread(() -> System.out.println("這麼屌的嗎,直接一個括號????")).start();
		
		/**
		 * lambda 3 不帶參數
		 */
		List<String> list =Arrays.asList("aaa","fsa","ser","eere");
        Collections.sort(list, (a,b)-> Integer.parseInt(String.valueOf(b.compareTo(a)+1)));
        for (String string : list) {
            System.out.println(string);
        }
        
        /**
         * lambda 4 帶參數
         */
        List<String> list2 =Arrays.asList("aaa","fsa","ser","eere");
        //List<Object> list2 =Arrays.asList("aaa","fsa","ser","eere"); 錯誤 list泛型需要與後面的comparator泛型相同
        Collections.sort(list2, (Comparator<? super String>) (String a,String b)->{
            return b.compareTo(a);
        }
        );
        for (String string : list) {
            System.out.println(string);
        }
        
        /**
         * lambda 5 允許使用外部變量(自動且隱性的給外部變量用final修飾),相當於內部類
         */
        int count =0;
        Jdk8Interface j8 = (s1,s2) -> System.out.println(s1+s2+count);
        j8.method("參數1", "參數2");
		
		new Jdk8Interface() {
			
			@Override
			public void method(String s1, String s2) {
				System.out.println(s1+s2+count);
				//count = 5; 會報錯 證明是final的
			}
		}.method("參數1", "參數2");;

	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章