Java8新特性四:Doublecolon()operator

编程

关注:Java提升营,最新文章第一时间送达,10T 免费学习资料随时领取!!!

双冒号(::)操作,也被称为方法引用运算符,用于直接调用指定类的方法。它的行为与la​​mbda表达式完全相同。它与lambda表达式的唯一区别在于,它使用名称直接引用方法,而不是提供方法的委托。

语法:

<Class name>::<method name>

示例:打印Stream的所有元素:

  • 使用Lambda表达式:

stream.forEach(s-> System.out.println(s));

完整示例:

// Java code to print the elements of Stream 

// without using double colon operator

import java.util.stream.*;

class GFG {

public static void main(String[] args)

{

// Get the stream

Stream<String> stream

= Stream.of("Geeks", "For",

"Geeks", "A",

"Computer",

"Portal");

// Print the stream

stream.forEach(s -> System.out.println(s));

}

}

输出:

Geeks

For

Geeks

A

Computer

Portal

  • 使用双冒号运算符:

stream.forEach(System.out::println(s));

完整示例:

// Java code to print the elements of Stream 

// using double colon operator

import java.util.stream.*;

class GFG {

public static void main(String[] args)

{

// Get the stream

Stream<String> stream

= Stream.of("Geeks", "For",

"Geeks", "A",

"Computer",

"Portal");

// Print the stream

// using double colon operator

stream.forEach(System.out::println);

}

}

输出:

Geeks

For

Geeks

A

Computer

Portal

什么时候和如何使用双冒号运算符?

方法引用或双冒号运算符可用于以下方法:

  • 静态方法
  • 实例方法
  • 构造函数

如何在Java中使用方法引用:

  1. 静态方法

语法:

(ClassName::methodName)

示例:

SomeClass::someStaticMethod

完整示例:

// Java code to show use of double colon operator 

// for static methods

import java.util.*;

class GFG {

// static function to be called

static void someFunction(String s)

{

System.out.println(s);

}

public static void main(String[] args)

{

List<String> list = new ArrayList<String>();

list.add("Geeks");

list.add("For");

list.add("GEEKS");

// call the static method

// using double colon operator

list.forEach(GFG::someFunction);

}

}

输出:

Geeks

For

GEEKS

  1. 实例方法

语法:

(objectOfClass::methodName)

示例:

System.out::println

完整示例:

// Java code to show use of double colon operator 

// for instance methods

import java.util.*;

class GFG {

// instance function to be called

void someFunction(String s)

{

System.out.println(s);

}

public static void main(String[] args)

{

List<String> list = new ArrayList<String>();

list.add("Geeks");

list.add("For");

list.add("GEEKS");

// call the instance method

// using double colon operator

list.forEach((new GFG())::someFunction);

}

}

输出:

Geeks

For

GEEKS

  1. 父类方法

语法:

(super :: methodName)

示例:

super::someSuperClassMethod

完整示例:

// Java code to show use of double colon operator 

// for super methods

import java.util.*;

import java.util.function.*;

class Test {

// super function to be called

String print(String str)

{

return ("Hello " + str + "

");

}

}

class GFG extends Test {

// instance method to override super method

@Override

String print(String s)

{

// call the super method

// using double colon operator

Function<String, String> func = super::print;

String newValue = func.apply(s);

newValue += "Bye " + s + "

";

System.out.println(newValue);

return newValue;

}

// Driver code

public static void main(String[] args)

{

List<String> list = new ArrayList<String>();

list.add("Geeks");

list.add("For");

list.add("GEEKS");

// call the instance method

// using double colon operator

list.forEach(new GFG()::print);

}

}

输出:

Hello Geeks

Bye Geeks

Hello For

Bye For

Hello GEEKS

Bye GEEKS

  1. 特定类型对象的实例方法

语法:

(ClassName::methodName)

示例:

SomeClass::someInstanceMethod

完整示例:

// Java code to show use of double colon operator  

// for instance method of arbitrary type

import java.util.*;

class Test {

String str=null;

Test(String s)

{

this.str=s;

}

// instance function to be called

void someFunction()

{

System.out.println(this.str);

}

}

class GFG {

public static void main(String[] args)

{

List<Test> list = new ArrayList<Test>();

list.add(new Test("Geeks"));

list.add(new Test("For"));

list.add(new Test("GEEKS"));

// call the instance method

// using double colon operator

list.forEach(Test::someFunction);

}

}

输出:

Geeks

For

GEEKS

  1. 类构造器

语法:

(ClassName::new)

示例:

ArrayList::new

完整示例:

// Java code to show use of double colon operator 

// for class constructor

import java.util.*;

class GFG {

// Class constructor

public GFG(String s)

{

System.out.println("Hello " + s);

}

// Driver code

public static void main(String[] args)

{

List<String> list = new ArrayList<String>();

list.add("Geeks");

list.add("For");

list.add("GEEKS");

// call the class constructor

// using double colon operator

list.forEach(GFG::new);

}

}

输出:

Hello Geeks

Hello For

Hello GEEKS

以上是 Java8新特性四:Doublecolon()operator 的全部内容, 来源链接: utcz.com/z/515573.html

回到顶部