lambda 、范型、匿名内部类结合例子

本文深入探讨Java8中Lambda表达式的应用,通过具体实例展示了如何利用Lambda表达式简化代码,提高程序的可读性和效率。文章覆盖了Lambda表达式的基础语法、与传统循环对比、函数操作以及双冒号操作符的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例子1.

LambdaTest.java

package LambdaTest;

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

interface person<T> {
	public abstract int eat(T aString, String bString);
}

public class LambdaTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		String[] atp = { "Rafael Nadal", "Novak Djokovic", "Stanislas Wawrinka", "David Ferrer", "Roger Federer",
				"Andy Murray", "Tomas Berdych", "Juan Martin Del Potro" };
		List<String> players = Arrays.asList(atp);

		// 以前的循环方式
		for (String player : players) {
			System.out.print(player + "; ");
		}

		// 使用 lambda 表达式以及函数操作(functional operation)
		players.forEach((player) -> System.out.print(player + "; "));

		// 在 Java 8 中使用双冒号操作符(double colon operator)
		players.forEach(System.out::println);
		
		int atmp;
		int btmp;
		//String aString;
		//String bString;
		
		person<String> tmPerson =  (String aString, String bString) -> 1;
		System.out.println(tmPerson.eat("11", "11"));
       
		new LambdaTest().testLambda((String aString, String bString) -> 1);
		
		// 这里不用带 <参数> 类型就是因为,还是定义的时候,把 <参数> 或者 <范型> 规定好了!
		new LambdaTest().testLambda(( aString, bString) -> Integer.valueOf(bString) + 1);
	}

	public void testLambda(person<String> person) {
		System.out.println("tetsLambda");
	}
}

例子2

LambdaTest2.java

package LambdaTest;

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

interface person2<T> {
	public abstract void eat(T aString);
}

interface person3 {
	public abstract void eat(String aString, String bString);
}

public class LambdaTest2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		String[] atp = { "Rafael Nadal", "Novak Djokovic", "Stanislas Wawrinka", "David Ferrer", "Roger Federer",
				"Andy Murray", "Tomas Berdych", "Juan Martin Del Potro" };
		List<String> players = Arrays.asList(atp);

		// 以前的循环方式
		for (String player : players) {
			System.out.print(player + "; ");
		}

		// 使用 lambda 表达式以及函数操作(functional operation)
		players.forEach((player) -> System.out.print(player + "; "));

		// 在 Java 8 中使用双冒号操作符(double colon operator)
		players.forEach(System.out::println);
		
		int atmp;
		int btmp;
		//String aString;
		//String bString;
		
		// 返回值是 void !
		person2<String> tmPerson =  (String aString) -> System.out.println("ss");
		person2<String> tmPerson2 = (aString) -> System.out.println("ss");
		
		new LambdaTest2().testLambda((String a) -> System.out.println( a +"ss"));
		new LambdaTest2().testLambda(a -> System.out.println(a + "ss"));
		
		/** 这里的 String 是对象 !!!千万不要理解错!,把鼠标放上去就知道了!颜色都不一样!
		 * 而且 <对象> 首字母是 <小写>, 我这样写法是不规范的,还容易引起误导! */
		new LambdaTest2().testLambda(String -> System.out.println("ss"));
		
		new LambdaTest2().testLambda2((String a, String b) -> System.out.println(a + "ss"));
		new LambdaTest2().testLambda2((a, b) -> System.out.println(a + "ss"));
		
		/** 这里的 String 是对象 !!!千万不要理解错!,把鼠标放上去就知道了!颜色都不一样!
		 * 而且 <对象> 首字母是 <小写>, 我这样写法是不规范的,还容易引起误导! */
		new LambdaTest2().testLambda2((String, String2) -> System.out.println("ss"));
		
	}

	public void testLambda(person2<String> person) {
		System.out.println("tetsLambda222  person2");
	}
	
	public void testLambda2(person3 person) {
		System.out.println("tetsLambda333 person3");
	}
}

例子3

LambdaTest3.java

package LambdaTest;

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

public class LambdaTest3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		String[] atp = { "Rafael Nadal", "Novak Djokovic", "Stanislas Wawrinka", "David Ferrer", "Roger Federer",
				"Andy Murray", "Tomas Berdych", "Juan Martin Del Potro" };
		List<String> players = Arrays.asList(atp);

		// 以前的循环方式
		for (String player : players) {
			System.out.print(player + "; ");
		}

		// 使用 lambda 表达式以及函数操作(functional operation)
		players.forEach((String player) -> System.out.print(player + "; "));

		// 在 Java 8 中使用双冒号操作符(double colon operator)
		players.forEach(System.out::println);
	
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值