La clase java.lang.reflect.Constructor se usa para administrar los metadatos del constructor, como el nombre de los constructores, los tipos de parámetros de los constructores y los modificadores de acceso de los constructores. Podemos inspeccionar los constructores de clases e instanciar objetos en tiempo de ejecución. La array Constructor[] tendrá una instancia de Constructor para cada constructor público declarado en la clase.
Para obtener objetos Constructor, uno puede obtener el objeto de clase Constructor del objeto Clase.
Parámetro: T- la clase en la que se declara el constructor
Las interfaces implementadas son las siguientes:
- Elemento anotado
- Declaración genérica
- Miembro
Ilustración:
Class aClass = Employee.class; Constructor[] constructors = aClass.getConstructors();
Requisito previo:
Analicemos algunos métodos mediante los cuales podemos obtener información sobre los constructores.
- getConstructors() : Uno puede obtener todos los constructores públicos en la clase respectiva. devuelve una array de constructores.
- getDeclaredConstructors() : Uno puede obtener todos los constructores en la clase respectiva independientemente de la palabra clave pública.
- getName(): se puede obtener el nombre del constructor respectivo.
- getModifiers(): Esto devuelve los modificadores del lenguaje Java para el constructor representado por este objeto Constructor como un número entero. La clase Modifier debe usarse para decodificar los modificadores.
- getParameterTypes(): Esto devuelve los tipos de parámetros de un constructor en particular.
Además, los métodos primarios de esta clase se dan a continuación en formato tabular, que es el siguiente:
Método | Descripción |
---|---|
es igual a (Objeto obj ) | Compara este Constructor con el objeto especificado. |
getAnnotatedReceiverType() | Devuelve un objeto AnnotatedType que representa el uso de un tipo para especificar el tipo de receptor del método/constructor representado por este objeto Executable. |
getAnnotatedReturnType() | Devuelve un objeto AnnotatedType que representa el uso de un tipo para especificar el tipo de devolución del método/constructor representado por este ejecutable. |
getAnnotation(Clase<T> clase de anotación) | Devuelve la anotación de este elemento para el tipo especificado si dicha anotación está presente; de lo contrario, es nulo. |
getDeclaredAnnotations() | Devuelve anotaciones que están directamente presentes en este elemento. |
getDeclaringClass() | Devuelve el objeto Class que representa la clase o interfaz que declara el ejecutable representado por este objeto. |
getExceptionTypes() | Devuelve una array de objetos Class que representan los tipos de excepciones declaradas como lanzadas por el ejecutable subyacente representado por este objeto. |
getGenericExceptionTypes() | Devuelve una array de objetos Type que representan las excepciones declaradas para este objeto ejecutable. |
getGenericParameterTypes() | Devuelve una array de objetos Type que representan los tipos de parámetros formales, en orden de declaración, del ejecutable representado por este objeto. |
código hash() | Devuelve el código hash para este constructor. |
es sintético() | Devuelve verdadero si este constructor es un constructor sintético |
esVarArgs() | Devuelve verdadero si este constructor fue declarado para tomar un número variable de argumentos |
aStringGenérica() | Devuelve una string que describe este constructor. |
Enstringr() | Devuelve una string que describe este constructor. |
Ejemplo:
Java
// Java program to show uses of Constructor class // present in java.lang.reflect package // Importing package to that examine and // introspect upon itself import java.lang.reflect.*; // Class 1 // Helper class class Employee { // Member variables of this class int empno; String name; String address; // Constructor of this class // Constructor 1 public Employee(int empno, String name, String address) { // 'this' keyword refers to the // current object itself this.empno = empno; this.name = name; this.address = address; } // Constructor 2 public Employee(int empno, String name) { this.empno = empno; this.name = name; } // Constructor 3 private Employee(String address) { this.address = address; } // Constructor 4 protected Employee(int empno) { this.empno = empno; } } // Class 2 // Main class public class GFG { // Main driver method public static void main(String args[]) { // Creating an object of above class // in the main() method Class c = Employee.class; // Display message System.out.println("All public constructor are :"); Constructor[] cons = c.getConstructors(); for (Constructor con : cons) // It will return all public constructor System.out.print(con.getName() + " "); // Display message for better readability System.out.println( "\n\nAll constructor irrespective of access modifiers"); // Getting constructors of this class // using getDeclaredConstructors() method cons = c.getDeclaredConstructors(); // Iterating to print all constructors for (Constructor con : cons) System.out.print(con.getName() + " "); // Display message System.out.println( "\n\naccess modifiers of each constructor"); // Iterating to get all the access modifiers for (Constructor con : cons) // Print all the access modifiers for all // constructors System.out.print( Modifier.toString(con.getModifiers()) + " "); // Parameters types // Display message only System.out.println( "\n\ngetting parameters type of each constructor"); // Iteerating to get parameter types of each // constructor using for-each loop for (Constructor con : cons) { Class[] parameratertypes = con.getParameterTypes(); for (Class c1 : parameratertypes) { // Print and display parameter types of all // constructors System.out.print(c1.getName() + " "); } // Here we are done with inner loop // New line System.out.println(); } } }
All public constructor are : Employee Employee All constructor irrespective of access modifiers Employee Employee Employee Employee access modifiers of each constructor protected private public public getting parameters type of each constructor int java.lang.String int java.lang.String int java.lang.String java.lang.String
Publicación traducida automáticamente
Artículo escrito por kapilnama1998 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA