Озабоченность: Java Promotion Camp , последние статьи будут доставлены в первый раз, бесплатные учебные материалы 10T могут быть собраны в любое время! ! !
Операция с двойным двоеточием (: :), также называемая оператором ссылки на метод, используется для непосредственного вызова метода указанного класса. Его поведение в точности совпадает с лямбда-выражением. Единственное различие между ним и лямбда-выражением состоит в том, что оно использует имя для прямой ссылки на метод вместо предоставления делегата метода.
Синтаксис:
<Class name>::<method name>
Пример: Stream
все элементы напечатаны :
- Используйте лямбда-выражения:
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:
- Статический метод
Синтаксис:
(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
- Метод экземпляра
Синтаксис:
(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
- Родительский метод
Синтаксис:
(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 + "\n");
}
}
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 + "\n";
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
- Методы экземпляра для определенных типов объектов
Синтаксис:
(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
- Конструктор класса
Синтаксис:
(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