Java 8 方法引用
原文:https://www.studytonight.com/java-8/java-8-method-reference
方法引用是 Java 中的一个新概念,是在 Java 8 版本中加入的。这个特性允许我们通过使用方法引用来调用方法。它的主要用途是调用函数接口的方法,并使用':'运算符将类或对象与方法名分开。例如类名::方法名或对象::方法名。我们将在后面的例子中看到它。
我们希望您了解函数式接口,因为这个主题与它相关。如果你是初学者,那么我们建议你首先阅读我们的文章 Java 函数接口,然后继续阅读这篇文章。
Java 中方法引用的类型
Java 中有四种类型的方法引用,请参见以下内容:
对静态方法的引用
对实例方法的引用
对构造器的引用
静态方法引用
要引用静态方法,有以下语法引用另一个类或接口的静态方法。
语法
className::staticMethod
示例:
在这个例子中,我们使用方法引用概念来引用静态方法。
interface JavaInterface{
void showInterfaceInfo();
}
public class STDemo {
static void show() {
System.out.println("This is called using method reference");
}
public static void main(String[] args) {
// Referring Method
JavaInterface ji = STDemo::show;
ji.showInterfaceInfo();
}
}
这称为使用方法引用
例:参考库静态法
在这个例子中,我们指的是数学类的静态方法。我们所指的静态方法是用户定义的方法或库方法。
interface JavaInterface{
int findMax(int a, int b);
}
public class STDemo {
public static void main(String[] args) {
// Referring Method
JavaInterface ji = Math::max;
int result = ji.findMax(10, 20);
System.out.println(result);
}
}
Twenty
实例方法引用
当我们使用方法引用概念引用一个实例方法时,它被称为实例方法引用。我们使用类对象来引用实例方法。下面给出了实例方法引用的语法。
语法
object::instanceMethod
示例:
在本例中,我们将方法 show()引用为 showInterfaceInfo()方法。调用 showInterfaceInfo()实际上是引用和调用 show()方法。
interface JavaInterface{
void showInterfaceInfo();
}
public class STDemo {
void show() {
System.out.println("This is called using instance method reference");
}
public static void main(String[] args) {
STDemo demo = new STDemo();
// Referring Method
JavaInterface ji = demo::show;
ji.showInterfaceInfo();
}
}
这称为使用方法引用
示例:引用库实例方法
这里,我们引用的是 length(),这是一个String
类的实例方法,来自于 JavaInterface 的 stringLenght()方法。length()方法是一个内置的 String 方法,我们在这里用自己的方法引用它。
interface JavaInterface{
int stringLength();
}
public class STDemo {
public static void main(String[] args) {
STDemo demo = new STDemo();
// Referring Method
JavaInterface ji = "hello"::length;
int result = ji.stringLength();
System.out.println(result);
}
}
five
对构造器的引用
这是方法引用的类型之一,允许我们用稍微不同的语法调用构造器。
语法
className::new
示例:
在这个例子中,我们从一个方法引用中引用一个构造器。构造器可以是默认的或参数化的,并且能够被方法引用调用。
interface JavaInterface{
void showInfo();
}
public class STDemo {
STDemo(){
System.out.println("Constructor using method reference");
}
public static void main(String[] args) {
// Referring Constructor
JavaInterface a = STDemo::new;
a.showInfo();
}
}
使用方法引用的构造器
另一个例子:调用参数化构造器
interface JavaInterface{
void showInfo(String msg);
}
public class STDemo {
STDemo(String msg){
System.out.println(msg);
}
public static void main(String[] args) {
// Referring Constructor
JavaInterface a = STDemo::new;
a.showInfo("StudyTonight");
}
}
今晚学习