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.lx.newjdk;
 
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import org.junit.Test;
 
@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);
        }
        );
        //也可以这么写
       /* Collections.sort(list2, (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");;
 
	}
	 
	
}
package com.lx.newjdk;

import java.util.List;

@FunctionalInterface
public interface FuncInterface {

	public List<Object> process(String[] s);
}

 

package com.lx.newjdk;

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

import org.junit.Test;

public class TestNew {
	/**
	 * 测试新特性 方法与构造函数引用 ::
	 */
	@Test
	 public void fun(){
		 Jdk8Interface jI = (s1,s2) -> System.out.println(s1+s2);
		 Jdk8Interface jI2 = Arrays::asList;
		 String[] ss = {"9","999"};
		 jI.method("1", "3");
		 
		 
		 FuncInterface fi = Arrays::asList; 
		 System.out.println((fi.process(ss)) instanceof List);
	}
	
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值