004 方法引用

一 . 概述

  在之前我们每一次使用lambda都是自已创建的,但是有的时候我们可能使用的lambda就是现在已有的方法了.

  毕竟lambda就是一个方法的实现.

  在jdk8之中定义了方法引用的概念,这可以让我们实现方法的复用,请记住,方法引用仅仅只是lambda的一种简化写法而已,没有什么奇怪的地方.



二 .方法引用

在这里只是介绍两种方法引用,不会去将构造函数引用这些.

[1]静态方法引用

在jdk8之中,定义了四种方法引用,在下面一次介绍这四种方法引用.

  静态方法引用 : 类名 :: 静态方法名

例子 :  

    public static  void add() {
        System.out.println("add method ....");
    }

    @Test
    public void test3() {
        //定义一个静态的方法引用
         new Thread(LambdaTest :: add) .start();
    }

首先我们定义了一个静态方法,然后我们实现了一个线程.

  由于我们定义的静态函数和此处需要的lambda的接口形式是一致的,因此我们就可以使用这个静态的方法引用替换前面的lambda的使用.

[2]实例方法引用

    public void div() {
        System.out.println("div ...");
    }

    @Test
    public void test4() {
        LambdaTest test = new  LambdaTest();
        new Thread(test :: div).start();
    }

我们定义了一个实例方法,并且创建了一个对象的实例.

我们在我们需要使用lambda的地方传入了一个实例方法的引用.



三 . 总结

  我们必须只将方法引用视为lambda的一种简写方式,认清其实只是写法的不同而已.

  个人认为,代码怎么容易理解,我们就应该使用哪种方式,比如方法引用有的时候就会非常难以理解.

原文地址:https://www.cnblogs.com/trekxu/p/9024184.html

时间: 2024-11-06 03:46:06

004 方法引用的相关文章

JAVA 8 方法引用 - Method References

什么是方法引用 简单地说,就是一个Lambda表达式.在Java 8中,我们会使用Lambda表达式创建匿名方法,但是有时候,我们的Lambda表达式可能仅仅调用一个已存在的方法,而不做任何其它事,对于这种情况,通过一个方法名字来引用这个已存在的方法会更加清晰,Java 8的方法引用允许我们这样做.方法引用是一个更加紧凑,易读的Lambda表达式,注意方法引用是一个Lambda表达式,其中方法引用的操作符是双冒号"::". 方法引用例子 先看一个例子 首先定义一个Person类,如下:

Java8之方法引用

一.概述 在学习lambda表达式之后,我们通常使用lambda表达式来创建匿名方法.然而,有时候我们仅仅是调用了一个已存在的方法.如下: Arrays.sort(stringsArray,(s1,s2)->s1.compareToIgnoreCase(s2)); 在Java8中,我们可以直接通过方法引用来简写lambda表达式中已经存在的方法. Arrays.sort(stringsArray, String::compareToIgnoreCase); 这种特性就叫做方法引用(Method

JDK8的lambda表达式、方法引用

(部分转自:https://www.cnblogs.com/xiaoxi/p/7099667.html) 1. lambda表达式 以前定义一个Thread: 1 final int i = 0; 2 new Thread(new Runnable() { 3 @Override 4 public void run() { 5 System.out.println("i = " + i); 6 } 7 }).start(); lambda表达式定义: 1 int i = 0; 2 ne

java8之lambda表达式(方法引用)

有些时候,你想要传递给其他代码的操作已经有实现的方法了.示例: button.setOnAction(event -> System.out.println(event); 如果你能够只将println方法传递给setOnAction方法,就更好了!下面是改后的代码: button.setOnAction(System.out::println); 表达式System.out::println是一个方法引用,等同于lambda表达式: x -> System.out.println(x) 正如

Java8学习笔记(二)-函数式接口与方法引用

一.Lambada表达式到底是什么 首先先看一下下面的一段代码! package cn.org.kingdom.jdk8; @FunctionalInterface interface MyInterface { void test(); String toString(); } public class Test { public void test(MyInterface inter) { System.out.println("*************************"

java基础-四种方法引用

实例 直接三角形,通过两边算第三边,目的是为了如何使用这几种方法引用.代码中多有些不合适,尽情原谅. 静态方法引用 接口的参数列表与类中的具体实现方法的参数列表一样,返回值一致. 调用 //静态引用 IStaticSide staticSide = Five::getStaticSize; staticSide.getStaticSize(3, 6); 类中定义 //静态引用 public static double getStaticSize(double s,double s2) { ret

Java8 方法引用与构造器引用

package java_8; import org.junit.Test; import java.io.PrintStream; import java.util.Comparator; import java.util.function.*; import java.util.function.Function; /** * 方法引用:若Lambda体中的内容有方法已经实现了,那么我们可以使用"方法引用" * (可以理解为方法引用时Lambda表达式的另外一种表现形式 * * 主

Swift编程语言中的方法引用(基于2.2版本)

由于Apple官方的<The Swift Programming Guide>对Swift编程语言中的方法引用介绍得不多,所以这里将更深入.详细地介绍Swift中的方法引用. Swift与Objective-C不同,由于Objective-C的方法都属于“消息”,因此直接用selector的消息签名即可表示一条确定的消息作为方法引用.而Swift的方法更类似于C++.Java中的方法,也就是说比Objective-C更静态,因此它不具有如此般灵活性. 另外,在Swift编程语言中,方法引用与C

java中的方法引用

引用静态方法:类名称::static 方法名称: 引用某个对象的方法:对象::普通方法: 引用特定类方法:特定类::方法 引用构造方法:类名称::new 范例:引用静态方法 package com.java.demo; interface IMessage<P,R>{ // P表示方法的参数类型,R表示方法的返回值类型 public R change(P p); } public class TestDemo{ public static void main(String args[]){ /