Java8方法引用笔记240128

Java8方法引用笔记240128

方法引用用双冒号::

当静态方法的参数个数和类型和拉姆达表达式提供的参数相同时, 可以用方法引用

方法引用的类型主要有以下四种:

  1. 静态方法引用:类名::staticMethodName

  2. 实例方法引用:instanceReference::instanceMethodName

  3. 构造方法引用:类名::new

  4. 类成员方法引用:类名::methodName

Java8方法引用示例

示例1:

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

public class 方法引用示例类 {
	
	public static void 被引用的方法(Object o) {
		System.out.print(o);
	}
	
	public static void main(String[] arguments) {
		
		List<Object> list = Arrays.asList("a","b","c",1,2,3,'a','b','c');
		
		
		
		
		list.stream() .forEach(System.out::println);  // 例一
		
		
		
		list.stream() .forEach(方法引用示例类::被引用的方法);  //例二 引用本类的静态方法
		
		
		
		
	}
}
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

public class 方法引用示例类 {
	
	public static void 类被引用的静态方法(Object o) {
		System.out.print(o);
	}
	
	public 方法引用示例类() {}
	public 方法引用示例类(Object o) {	System.out.print(o); 	}
	public void 实例被引用的方法(Object o) {	System.out.print(o);	}
	
	
	public static void main(String[] arguments) {
		
		方法引用示例类 方法引用示例实例 = new 方法引用示例类();
		List<Object> list = Arrays.asList("a","b","c",1,2,3,'a','b','c',1.23,4.56);
		
		
		list .forEach(System.out::println);  // 例一
		list .forEach(方法引用示例类::类被引用的静态方法);  //例二 引用本类的静态方法
		list .forEach(方法引用示例类::new);  //例三 引用本类的构造方法
		list .forEach(方法引用示例实例::实例被引用的方法);  //例四 引用本类的实例的方法
		
		
		Stream.of(1,2,3.14,"a","b",'c','d').forEach(System.out::println);   // 例一
		Stream.of(1,2,3.14,"a","b",'c','d').forEach(方法引用示例类::类被引用的静态方法); //例二 引用本类的静态方法
		Stream.of(1,2,3.14,"a","b",'c','d').forEach(方法引用示例类::new); //例三 引用本类的构造方法
		Stream.of(1,2,3.14,"a","b",'c','d').forEach(方法引用示例实例::实例被引用的方法);  //例四 引用本类的实例的方法
		
	}
}

引用System.out.println

List<String> names = Arrays.asList("John", "Jane", "Jack");
names.forEach(v->System.out.println(v)); //Lambda表达式
names.forEach(System.out::println); // 修改为方法引用形式

引用构造方法

List<String> names = Arrays.asList("John", "Jane", "Jack");
names.forEach(name -> new Person(name)); //Lambda表达式
names.forEach(Person :: new); // 修改为方法引用形式
  1. 引用数组的实例方法
Integer[] numbers = {1, 2, 3, 4, 5};
Arrays.sort(numbers, (a, b) -> Integer.compare(a, b)); // 使用Lambda表达式
Arrays.sort(numbers, Integer::compare); // 使用方法引用

注意,不是所有的方法都可以用方法引用来表示。例如,那些带有多个参数的方法、或者没有返回值的方法就不能用方法引用来表示。对于这些情况,你仍然需要使用Lambda表达式。

你可能感兴趣的:(JAVA,笔记,java)