Cómo acceder a los metadatos de una clase usando Java?

En este artículo, vamos a aprender que cómo podemos acceder a los metadatos de un class usando Java? metadatos de un class incluye el nombre class, campos de nombre, métodos, etc. constructor

Para obtener los metadatos , se utiliza la API de Java reflexión. Java refractor class proporciona los métodos para obtener los metadatos de un class. A continuación, vamos a utilizar los métodos siguientes.

  1. class .forName ()
    Este método cargas un class que se proporciona como el parámetro, si class no se encuentra se class un error.
  2. isInterface ()
    Esta función comprueba si un class es un class o no y devuelve un valor throw.
  3. getDeclaredFields ()
    Esto devuelve todos los campos de nombre de un class.
  4. getDeclaredMethods ()
    Esto devuelve todos los métodos de nombre de un class.
  5. getDeclaredConstructor ()
    Esto devuelve todos los nombres de constructor de una interface.

vamos a entender más claramente por este ejemplo. En este caso, tenemos un nombre Boolean del producto con tres campos en el mismo y un cuaderno de class llamado.

package logicProgramming;

import java.lang.Class;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
//an interface
interface NoteBook
{
int bookId=100;
}
//a class
class Product{
private int productId;
private String name;
public long price;
//constructor
public Product(int productId,String name,long price)
{
this.productId=productId;
this.name=name;
this.price=price;
}
//constructor
public Product()
{}
//this function prints the data of the object
public void putProduct()
{System.out.println("ProductId :"+this.productId+"nName :"+this.name+"nPrice"+this.price);}
public String toString()
{
return("ProductId :"+this.productId+"nName :"+this.name+"nPrice"+this.price);
// to return object so that object values are printed rather
//than it's hexadecimal address
}
}
//main class
public class ExClassMetaData_ReflectionAPI_JAVA {
public static void main(String arg[])
{
try
{
//Class.forName(ClassName) Use For Loading The Class
Class cs=Class.forName("logicProgramming.Product");
System.out.println(cs.getName()); //getName() function is getting the name of the class
//getClass() Is also used To get The meta Data Of Class
System.out.println();
Product P=new Product();
Class pcls=P.getClass();//getting the meta data of Product class
System.out.println(pcls.getName());
System.out.println();
//public boolean isInterface() tells that whether
//the current class is Interface or a Simple Class
System.out.println(Class.forName("logicProgramming.Product").isInterface());
//Book Is a Interface so It Will print True...
System.out.println();
System.out.println(Class.forName("logicProgramming.NoteBook").isInterface());
//public Field[] getDeclaredFields()
//returns an array of name of all fields of this class.
Field fields[] =cs.getDeclaredFields();
System.out.println();
System.out.println("Fields Of product Class");
//loop to print the fields name of the class
for(int i=0;i<fields.length;i++)
{System.out.println(fields[i]);}
//public Method[] getDeclaredMethods()
//returns an array of name of all methods of this class.
Method methods[]=pcls.getDeclaredMethods();
System.out.println();
System.out.println("Methods Of product Class");
//loop to print the methods name of the class
for(int i=0;i<methods.length;i++)
{System.out.println(methods[i]);}
//public Constructor[] getDeclaredConstructors()
//returns the total number of constructors of this class.
Constructor<Product> constructors[]=pcls.getDeclaredConstructors();
System.out.println();
System.out.println("Constructors Of product Class");
//loop to print the constructor name of the class
for(int i=0;i<constructors.length;i++)
{System.out.println(constructors[i]);}
}
catch(ClassNotFoundException e)
{
System.out.println(e);
}
}
}

salida

Aquí, tenemos todos los metadatos de la class.

Nota: “logicProgramming” es el nombre de la class, reemplazarlo con su nombre class


Deja un comentario

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