Java - Class
Definición
-
Clase genérica
se utiliza para representar laclase
de untipo de objeto
- Representa una clase de un tipo particular
T
- Representa una clase de un tipo particular
-
Clase
contiene información sobre eltipo de objeto
que representa- Como
nombre
,estructura
ymétodos
- Como
-
La
clase Class<T>
se utiliza para obtener información sobre untipo de objeto
entiempo de ejecución
-
Permite
a los desarrolladorescrear código
que secomporte
demanera diferente
dependiendo deltipo de objeto
con el que se esté trabajando -
Un objeto
Class
representa la definición de la clase
-
Ejemplo
-
Supongamos que tenemos una clase
Person
que representa a unapersona
- La
clase Person
tiene los siguientesatributos
de clase
- La
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
}
-
Supongamos que queremos crear un
método
queimprima
elnombre
y laedad
de unapersona
en la terminal- Podríamos
crear
unmétodo
que tome unobjeto Person
comoargumento
y lo imprima en la terminal de la siguiente manera
- Podríamos
public void printPerson(Person p) {
System.out.println("Name: " + p.getName());
System.out.println("Age: " + p.getAge());
}
-
Si queremos que este
método
puedaimprimir
lainformación
decualquier tipo de objeto
no solo deobjetos
de laclase Person
- Podemos utilizar la
clase Class<T>
para hacer que elmétodo
sea “genérico” ypueda trabajar
con cualquiertipo de objeto
- Podemos utilizar la
-
Para hacer esto
-
Debemos cambiar la
signatura/cabecera/firma
delmétodo
para que acepte unargumento
de tipoClass<T>
en lugar de unobjeto Person
- La nueva
signatura/cabecera/firma
del método quedaría así
- La nueva
-
public static <T> void printObject(Object obj) {
// El cuerpo del método se implementará más adelante
}
-
Ahora que tenemos la
signatura/cabecera/firma
del método- Debemos
implementar
elcuerpo del método
- Debemos
-
En el
cuerpo del método
podemos utilizar laclase Class<T>
para obtener información sobre eltipo de objeto
que se está pasando comoargumento
- Luego utilizar esa información para
imprimir
losatributos
delobjeto
en laterminal
- Luego utilizar esa información para
-
Para hacer esto debemos utilizar el
método getDeclaredFields()
de laclase Class<T>
para obtener unalista
de losatributos
del objeto- Podemos
iterar
sobre estalista
y utilizar losmétodos get()
ygetName()
de laclase Field
para obtener el valor y el nombre de cada atributo respectivamente
- Podemos
-
Finalmente
imprimir
esta información en la terminal para que el usuario pueda verla -
El cuerpo del
método
quedaría así
public static <T> void printObject(T obj) {
Class<?> cls = obj.getClass();
Field[] fields = cls.getDeclaredFields();
for (Field field : fields) {
try {
System.out.println(field.getName() + ": " + field.get(obj));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
- Podemos utilizar este
método
paraimprimir
la información de cualquier tipo de objeto en la terminal
Ejemplo de impresión
- Si queremos imprimir la información de un
objeto Person
podemos pasar unainstancia
de laclase Person
comoargumento
almétodo printObject()
de la siguiente manera
Person p = new Person("John Doe", 30);
printObject(p);
- Imprimirá en la
terminal
la información delobjeto Person
Name: John Doe
Age: 30
En resumen
-
Clase Class<T>
permite-
Obtener información sobre
tipos de objetos
entiempo de ejecución
-
Crear
código más flexible y reutilizable
-
-
Utilizamos la
clase Class<T>
para- Crear un
método genérico
que puedeimprimir
lainformación
de cualquiertipo de objeto
en la terminal
- Crear un
Deja un comentario