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(); } } }
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(); } } }
Synthetic Methods of BigInteger Class are Method: compareTo
Referencia:
- https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html#isSynthetic–
- https://nagakishoresidde.wordpress.com/2015/10/18/synthetic-constructs-in-java/
Publicación traducida automáticamente
Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA