Clase java.lang.reflect.Constructor en Java

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.

  1. getConstructors() : Uno puede obtener todos los constructores públicos en la clase respectiva. devuelve una array de constructores.
  2. getDeclaredConstructors() : Uno puede obtener todos los constructores en la clase respectiva independientemente de la palabra clave pública.
  3. getName(): se puede obtener el nombre del constructor respectivo.
  4. 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.
  5.  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();
        }
    }
}
Producción

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

Deja una respuesta

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