El operador de dos puntos dobles (::) , también conocido como operador de referencia de método en Java, se usa para llamar a un método refiriéndose a él directamente con la ayuda de su clase. Se comportan exactamente como las expresiones lambda. La única diferencia que tiene con las expresiones lambda es que utiliza una referencia directa al método por nombre en lugar de proporcionar un delegado al método.
Sintaxis:
<Class name>::<method name>
Ejemplo: Para imprimir todos los elementos de la secuencia:
- Usando la expresión Lambda:
stream.forEach( s-> System.out.println(s));
Programa:
// 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));
}
}
Producción:Geeks For Geeks A Computer Portal
- Usando el operador de dos puntos dobles:
stream.forEach( System.out::println);
Programa: Para demostrar el uso del operador de dos puntos dobles
// 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);
}
}
Producción:Geeks For Geeks A Computer Portal
¿Cuándo y cómo usar el operador de dos puntos dobles?
La referencia de método o el operador de dos puntos dobles se pueden utilizar para hacer referencia a:
- un método estático,
- un método de instancia, o
- un constructor
Cómo usar la referencia de método en Java:
- método estático
Sintaxis:
(ClassName::methodName)
Ejemplo:
SomeClass::someStaticMethod
Programa:
// 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);
}
}
Producción:Geeks For GEEKS
- Método de instancia
Sintaxis:
(objectOfClass::methodName)
Ejemplo:
System.out::println
Programa:
// 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);
}
}
Producción:Geeks For GEEKS
- Súper método
Sintaxis:
(super::methodName)
Ejemplo:
super::someSuperClassMethod
Programa:
// 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);
}
}
Producción:Hello Geeks Bye Geeks Hello For Bye For Hello GEEKS Bye GEEKS
- Método de instancia de un objeto arbitrario de un tipo particular
Sintaxis:
(ClassName::methodName)
Ejemplo:
SomeClass::someInstanceMethod
Programa:
// 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);
}
}
Producción:Geeks For GEEKS
- Constructor de clase
Sintaxis:
(ClassName::new)
Ejemplo:
ArrayList::new
Programa:
// 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
);
}
}
Producción:Hello Geeks Hello For Hello GEEKS
Publicación traducida automáticamente
Artículo escrito por RishabhPrabhu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA