Clase de método | Método isBridge() en Java

El método java.lang.reflect .Method.isBridge() se utiliza para comprobar si una función es una función puente o no. Este método devuelve verdadero si el objeto del método es un método puente; de ​​lo contrario, devuelve falso.

Método puente: estos son métodos que crean una capa intermedia entre las funciones de origen y destino. Por lo general, se utiliza como parte del proceso de borrado de tipos. Significa que se requiere el método de puente como una interfaz segura de tipo.

Por ejemplo, en el Ejemplo a continuación, el método compare() que toma Object como parámetro se comporta como un método puente. Convertirá el objeto en string y llamará a la función de comparación que toma la string como parámetros. Así que compare (Objeto a, Objeto b) actúe como puente entre la fuente (El método que llama a compare()) y el destino (compare(String, String)).

Ejemplo:

public class compareValues implements Comparator {

   // target method
   public int compare(String a, String b) 
   {
   }
   
   // bridge method
   public int compare(Object a, Object b) {
      return compare((String)a, (String)b);
   }
}

Sintaxis:

public boolean isBridge()

Valor devuelto: este método devuelve verdadero si el objeto del método es un método puente según las especificaciones de JVM; de lo contrario, devuelve falso .

El siguiente programa ilustra el método isBridge() de la clase Method:

Programa 1: Programa para devolver todos los Métodos Bridge de la clase BigInteger.

Explicación: en este método, al principio se crea el objeto de clase BigInteger. Después de crear el objeto, se crea una lista de objetos de método llamando a getMethods() de la clase Object. Ahora la lista de Métodos obtenidos se itera y se verifica isBridge(). Por lo tanto, obtenemos métodos de puente. Por último, imprima los nombres de los métodos de puente.

/*
* Program Demonstrate isBridge() method 
* of Method Class.
*/
import java.lang.reflect.Method;
import java.math.BigInteger;
public class GFG {
  
    // create main method
    public static void main(String args[])
    {
  
        try {
  
            // create BigInteger class object
            Class bigInt = BigInteger.class;
  
            // get list of Method object
            Method[] methods = bigInt.getMethods();
  
            System.out.println("Bridge Methods of BigInteger Class are");
  
            // Loop through Methods list
            for (Method m : methods) {
  
                // check whether the method is Bridge Method or not
                if (m.isBridge()) {
                    // Print Method name
                    System.out.println("Method: " + m.getName());
                }
            }
        }
        catch (Exception e) {
            // print Exception is any Exception occurs
            e.printStackTrace();
        }
    }
}
Producción:

Bridge Methods of BigInteger Class are
Method: compareTo

Programa 2: busque un método personalizado isBridge() o no.

Explicación: cuando una clase secundaria hereda el método de la clase principal, el método heredado actúa como método puente. En este Code First, se crea una clase Shape que contiene el método de dibujo y luego se crea una clase Rectangle que amplía la clase Shape. En el método principal, se crea el objeto Método para el método de dibujo de la clase Rectángulo. Ahora se comprueba si es el método Bridge() o no. Y finalmente imprimir el resultado.

// Program Demonstrate isBridge() method
// of Method Class.
// In this program a custom bridge method is created
// and by use of isBridge(), checked for Bridge Method
  
import java.lang.reflect.Method;
  
public class GFG {
  
    // create class
    protected class Shape {
        public void draw() {}
    }
  
    // create a class which extends Shape class
    public class Rectangle extends Shape {
    }
  
    // create main method
    public static void main(String args[])
    {
  
        try {
  
            // create class object for class
            // Rectangle and get method object
            Method m = Rectangle.class.getDeclaredMethod("draw");
  
            // check method is bridge or not
            boolean isBridge = m.isBridge();
  
            // print result
            System.out.println(m + " method is Bridge Method :"
                               + isBridge);
        }
        catch (NoSuchMethodException | SecurityException e) {
  
            // Print Exception if any Exception occurs
            e.printStackTrace();
        }
    }
}
Producción:

public void GFG$Rectangle.draw() method is Bridge Method :true

Referencia:
https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html#isBridge–
https://stackoverflow.com/questions/5007357/java-generics-bridge- método
http://stas-blogspot.blogspot.com/2010/03/java-bridge-methods-explained.html

Publicación traducida automáticamente

Artículo escrito por AmanSingh2210 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 *