Clase de método método isSynthetic() en Java

La clase de método java.lang.reflect nos ayuda a obtener información de un solo método en una clase o interfaz. Esta clase también proporciona acceso a los métodos de las clases y los invoca en tiempo de ejecución.

Método isSynthetic() de la clase Method: esta función comprueba si Method Object es una construcción sintética o no. Si el método es una construcción sintética, la función devuelve verdadero; de lo contrario, devolverá falso.

Construcción sintética : la construcción sintética son clases, campos y métodos creados por el compilador de Java para fines internos.

Sintaxis:

public boolean isSynthetic()

Valor devuelto: este método devuelve verdadero si, y solo si, Method es una construcción sintética según lo especificado por la JVM. De lo contrario, devuelve falso .

Los siguientes programas ilustran el método isSynthetic() de la clase Method:

Ejemplo 1:

En el programa a continuación, cuando el método principal crea un objeto de demostración de clase privada anidada e intenta acceder al nombre de variable privada «mensaje». Cuando se compila, creará un método sintético. Los detalles de ese método sintético se pueden obtener obteniendo el objeto de ese método con el uso del método isSynthetic() como se muestra en el programa a continuación.

// Java program to demonstrate isSynthetic()
// method of Method Class.
  
import java.lang.reflect.Method;
  
public class GFG {
  
    // create Demo class
    private static final class Demo {
        private String message = "A Computer Science"
                                 + " portal for geeks";
    }
  
    // create main method
    public static void main(String args[])
    {
  
        try {
            // create object of Demo class
            Demo obj = new Demo();
  
            // print message of nested demo class
            System.out.println("private Message"
                               + " variable of Demo class"
                               + obj.message);
  
            // get class object of demo class
            Class classobj = obj.getClass();
  
            // get list of declared method objects
            // of class object of Demo
            Method[] methods = classobj.getDeclaredMethods();
  
            // loop through method list
            for (Method method : methods) {
  
                // check method is Synthetic or not
                boolean isSynthetic = method.isSynthetic();
  
                // print result
                System.out.println(method
                                   + " method is Synthetic Method :"
                                   + isSynthetic);
            }
        }
        catch (Exception e) {
  
            // Print Exception if any Exception occurs
            e.printStackTrace();
        }
    }
}
Producción:

private Message variable of Demo classA Computer Science portal for geeks
static java.lang.String GFG$Demo.access$100(GFG$Demo) method is Synthetic Method :true

Ejemplo 2: programa para devolver todos los métodos de construcción sintéticos de la clase BigInteger.

Explicación: en este método, al principio, se crea el objeto de clase BigInteger. Después de crear Class Object de BigInteger Class, se crea una lista de Method Objects llamando a getMethods() de class Object. Repita la lista de métodos y obtenga el método sintético al verificar que el método sea sintético o que no use isSynthetic(). Por último, escriba el nombre del método sintético.

// Java program to Demonstrate isSynthetic()
// 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 class object for class BigInteger
            Class c = BigInteger.class;
  
            // get list of Method object
            Method[] methods = c.getMethods();
  
            System.out.println("Synthetic Methods"
                               + " of BigInteger Class are");
            // Loop through Methods list
            for (Method m : methods) {
  
                // check whether the method is
                // Synthetic Method or not
                if (m.isSynthetic()) {
                    // Print Method name
                    System.out.println("Method: "
                                       + m.getName());
                }
            }
        }
        catch (Exception e) {
            // print Exception is any Exception occurs
            e.printStackTrace();
        }
    }
}
Producción:

Synthetic Methods of BigInteger Class are
Method: compareTo

Referencia:

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 *