栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

jdk1.8新特性:lambda表达式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jdk1.8新特性:lambda表达式

package com.hq;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;

public class Jdk8NewFeatureTest {

	public static void main(String[] args) {
		
		
		//场景1:不带参数匿名内部类
		//原本写法
		new Thread(new Runnable() {
			@Override
			public void run() {
				System.out.println("Lambda!");
			}
		});
		//Testr1:写法较完整的格式(也可以拆成下面两步写)
		new Thread(() -> {
			System.out.println("Lambda!");
		});
		
		//匿名内部类
		Runnable t1= () -> {
			System.out.println("Lambda!");
		};
		new Thread(t1);
		
		//Testr2:如果方法体只有一句话,可以省略{}
		Runnable t2= () -> System.out.println("Lambda!");
		new Thread(t2);
		//或:
		new Thread(() -> System.out.println("Lambda!"));
		
		
		//场景2:带参数匿名内部类
		//原本写法:
		Person p1 = new Person() {
            @Override
            public void count(Integer val) {
                val++;
            }
        };
  		
  		//Testp01:写法较完整的格式
        Person p01= (var) -> {
        	var++;
  		};
  		
  		//Testp02:如果方法体只有一句话,可以省略{}
  		Person p02= (var) -> var++;
  		
  		//Testp03:如果有且只有一个参数,则()可以省略
  		Person p03= var -> var++;
  		//Testp04:如果方法体里只有某个方法且这个方法的入参是重写方法的入参,则可以用【调用方法的对象类型::方法名】写法
  		Person p04=System.out::println;
  		//类似于:
  		Person pp04 = new Person() {
            @Override
            public void count(Integer val) {
            	System.out.println(val);
            }
        };
        //Testp05:如果方法体里只有调用这个参数的某个方法,则可以用【调用方法的对象类型::方法名】写法
  		Person p05=Integer::intValue;
  		//类似于:
  		Person pp05 = new Person() {
            @Override
            public void count(Integer val) {
            	val.intValue();
            }
        };
  		
  		
		//场景3:forEach遍历方法
		List list = new ArrayList();
		list.add("hello");
		list.forEach(b -> System.out.println(b));
		//或者:
		list.forEach(System.out::println);
		//类似于原本写法:forEach方法里面参数类型是一个Consumer接口
		list.forEach(new Consumer(){
			public void accept(String b){
				System.out.println(b);
			}
		});
		
		//场景4:返回new一个对象
		//Testp06:如果方法体里只有调用这个参数的某个方法,则可以用【调用方法的对象类型::方法名】写法
		Person p06=PersonEn::new;
  		//类似于原本写法:
	}
}
interface Person {
	public void count(Integer val);
}
interface Person2 {
	PersonEn getPerson(int age);
}
class PersonEn{
	int age;
	public PersonEn(int age){
		this.age=age;
	}
	public int getAge(){
		return age;
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/877553.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号