java8 方法引用(二) 静态方法引用

一、概念

      如果函数式接口的实现恰好是通过调用一个静态方法来实现,那么就可以使用静态方法引用

二、实例

public class StaticExample {

	/**
	 * 无参数有返回值
	 * @return
	 */
	public static String put() {
		System.out.println("put method");
		return "hello";
	}

	/**
	 * 有参数无返回值
	 * @param size
	 */
	public static void con(String size) {
		System.out.println("size: " + size);
	}

	/**
	 * 带有一个参数一个返回值
	 * @param str
	 * @return
	 */
	public static String toUpperCase(String str) {
		return str.toUpperCase();
	}

	/**
	 * 带有两个参数一个返回值
	 * @param s1
	 * @param s2
	 * @return
	 */
	public static Integer len(String s1, String s2) {
		return s1.length() + s2.length();
	}

	public static void main(String[] args) {
		/**
		 * 无参数有返回值
		 */

		//lambda表达式的写法
		Supplier<String> stringSupplier= ()-> StaticExample.put();
		System.out.println(stringSupplier.get());

		//方法引用
		Supplier<String> stringSupplier2 = StaticExample::put;
		System.out.println(stringSupplier.get());

		/**
		 *  有参数无返回值
		 */
		//lambda表达式的写法
		Consumer<String> consumer = (x)-> StaticExample.con(x);
		consumer.accept("100");
		//方法引用
		Consumer<String> consumer2= StaticExample::con;
		consumer.accept("100");

		/**
		 * 有1个参数有一个返回值
		 */
		//lambda表达式的写法
		Function<String,String> function = (x)-> StaticExample.toUpperCase(x);
		System.out.println(function.apply("dada"));

		//方法引用的写法
		Function<String,String> function1= StaticExample::toUpperCase;
		System.out.println(function1.apply("dada"));

		/**
		 * 有两个参数一个返回值
		 */
		//lambda表达式的写法
		BiFunction<String,String,Integer> biFunction= (s1,s2)-> StaticExample.len(s1,s2);
		Integer apply = biFunction.apply("dada", "dada");
		System.out.println(apply);

		//方法引用的写法
		BiFunction<String,String,Integer> biFunction2= StaticExample::len;
		Integer apply2 = biFunction2.apply("dada", "dada");
		System.out.println(apply2);

	}

}

猜你喜欢

转载自blog.csdn.net/qq_41446768/article/details/87932211
今日推荐