Operador de dos puntos dobles (::) en Java

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:

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *