Autor
|
Tema: Metodo mostrar todos los atributos de un objeto por pantalla(RESUELTO) (Leído 5,922 veces)
|
Beginner Web
Desconectado
Mensajes: 634
youtu.be/0YhflLRE-DA
|
Buenas mi duda era si habia alguna forma de mostrar todos los atributos de un objeto, porque la verdad me canse de escribir mucho sout y llamar a los metodos Getters, alguna técnica porfis
|
|
« Última modificación: 30 Marzo 2019, 07:03 am por Beginner Web »
|
En línea
|
7w7
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
Buenas mi duda era si habia alguna forma de mostrar todos los atributos de un objeto, porque la verdad me canse de escribir mucho sout y llamar a los metodos Getters, alguna técnica porfis Puedes sobreescribir el metodo toString() ,pero como tienes el código?
|
|
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
|
|
|
Beginner Web
Desconectado
Mensajes: 634
youtu.be/0YhflLRE-DA
|
//Este es una clase public class Persona{ private String nombre; private int edad;
Constructor va aquí Getters & Setters aquí }
//Este es el main public class Personal{
public static void main(){ Persona objeto1=new Persona("Ana",14);
//Esto es algo tedioso de hacer varios objetos de distintas clases //Podia crear un metodo en la clase Persona que muestre todo, pero quiero saber si hay otra técnica por defecto sout para mostrar el nombre de objeto1; sout para mostrar la edad de objeto1;
}
}
Me parece que me conviene crear metodos en las clases para pedir los datos y otro para mostrarlos asi escribo menos en el main
|
|
« Última modificación: 30 Marzo 2019, 02:51 am por Beginner Web »
|
En línea
|
7w7
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
//Este es una clase public class Persona{ private String nombre; private int edad;
Constructor va aquí Getters & Setters aquí }
//Este es el main public class Personal{
public static void main(){ Persona objeto1=new Persona("Ana",14);
//Esto es algo tedioso de hacer varios objetos de distintas clases //Podia crear un metodo en la clase Persona que muestre todo, pero quiero saber si hay otra técnica por defecto sout para mostrar el nombre de objeto1; sout para mostrar la edad de objeto1;
}
}
Me parece que me conviene crear metodos en las clases para pedir los datos y otro para mostrarlos asi escribo menos en el main
Que tal chavalina? Usa GeshiSi hay mejores maneras de hacerlo por ejemplo una, lo que necesitas es algo de herencia simpleimport java.util.logging.Logger; /** * */ @FunctionalInterface public interface IPersonal { Logger LOGGER =Logger.getLogger(IPersonal.class.getSimpleName()); void introducirDatos(); default <T> void mostrar(final T value) { } /** * usar dentro de un metodo estatico * @param value * @param <T> */ static <T> void mostrar2(final T value) { } default <T> void log(final T t) { LOGGER.severe(t.toString()); } /** * usar dentro de un metodo estatico * @param t * @param <T> */ static <T> void log2(final T t) { LOGGER.severe(t.toString()); } }
import java.util.Objects; import java.util.Scanner; /** * */ public abstract class AbstractBasePersona implements IPersonal { protected int edad; protected static final Scanner LEER = new Scanner (System. in); public AbstractBasePersona() { this.edad = 0; this.nombre = ""; } public AbstractBasePersona (final String nombre, final int edad ) { this.nombre = Objects.requireNonNull(nombre,"Nombre no debe ser null"); this.edad = Objects.requireNonNull(edad,"Edad no debe ser null"); } return nombre; } public void setNombre (String nombre ) { this.nombre = nombre; } public int getEdad() { return edad; } public void setEdad(int edad) { this.edad = edad; } @Override public void introducirDatos() { mostrar("Introduce nombre: "); nombre = LEER.next(); //bug scanner LEER.nextLine(); mostrar("Introduce edad"); while(!LEER.hasNextInt()) { LEER.next(); mostrar("Valor invalido!, solo numeros"); } edad = LEER.nextInt(); } @Override final StringBuilder sb = new StringBuilder("\nPersona"); sb.append("\nNombre: ").append(nombre).append("\n"); sb.append("Edad: ").append(edad); return sb.toString(); } }
public class PersonalDeInformatica extends AbstractBasePersona { private boolean esDeInformatica; public PersonalDeInformatica() { super(); } public PersonalDeInformatica (final String nombre, final int edad, boolean esDeInformatica ) { super(nombre,edad); this.esDeInformatica = esDeInformatica; } @Override public void introducirDatos() { /** * Introducir los datos basicos por defecto, Nombre y Edad */ super.introducirDatos(); // pedimo si es personal de informatica mostrar("Personal del Informtica ?"); esDeInformatica = LEER.nextBoolean(); //setemos el tipo de persona setEsDeInformatica(esDeInformatica); } public boolean isEsDeInformatica() { return esDeInformatica; } public void setEsDeInformatica(boolean esDeInformatica) { this.esDeInformatica = esDeInformatica; } @Override final StringBuilder sb = new StringBuilder(); sb.append(super.toString()); sb.append("\nEs de informatica ? ").append(esDeInformatica); return sb.toString(); } }
/** * */ public class PersonalDeLimpieza extends AbstractBasePersona { private boolean esDeLimpieza; //por defecto la variable de instancia boolean, es false public PersonalDeLimpieza() { super(); } public PersonalDeLimpieza (final String nombre, final int edad, final boolean esDeLimpieza ) { super(nombre,edad); this.esDeLimpieza = esDeLimpieza; } public boolean isEsDeLimpieza() { return esDeLimpieza; } public void setEsDeLimpieza(boolean esDeLimpieza) { this.esDeLimpieza = esDeLimpieza; } @Override public void introducirDatos() { //invocamo al introducir datos de la superClaseAbstracta super.introducirDatos(); // pedimo si es personal de limpieza mostrar("Personal del limpieza ?"); esDeLimpieza = LEER.nextBoolean(); //setemos el tipo de persona setEsDeLimpieza(esDeLimpieza); } @Override final StringBuilder sb = new StringBuilder(); sb.append(super.toString()); sb.append("\nPersonal de Limpieza ? ").append(isEsDeLimpieza()).append("\n"); return sb.toString(); } }
import java.util.LinkedList; /** * */ private final LinkedList<IPersonal> iPersonalLinkedList = new LinkedList<>(); init(); } private void init() { final PersonalDeLimpieza personalDeLimpieza = new PersonalDeLimpieza(); personalDeLimpieza.introducirDatos(); final PersonalDeInformatica personalDeInformatica = new PersonalDeInformatica(); personalDeInformatica.introducirDatos(); /** * Anadimos a todos los objetos que extienden/implementan a IPersonal * para procesarlos de manera polimorfica gracias, a que cada uno, * sobreEscribe a toString(). */ iPersonalLinkedList.add(personalDeLimpieza); iPersonalLinkedList.add(personalDeInformatica); /** * Se invocara al metodo toString() de cada Objeto, implicitanmente */ //java 8 iPersonalLinkedList.forEach(e -> e.mostrar(e)); //java 7 /*for(IPersonal tmp : iPersonalLinkedList) { tmp.mostrar(tmp.toString()); }*/ } public static void main (String ... blabla) { } }
Salida Introduce nombre: Ana Introduce edad 14 Personal del limpieza ? false Introduce nombre: rubn Introduce edad 30 Personal del Informtica ? true Persona Nombre: Ana Edad: 14 Personal de Limpieza ? false Persona Nombre: rubn Edad: 30 Es de informatica ? true Process finished with exit code 0
Un ejemplo sencillo, luego chekeate el patrón Builder , y Abstract Generic Builder , con interfaces también (te aseguro que te gustara, y trabajaras mejor con inmutabilidad)
|
|
« Última modificación: 30 Marzo 2019, 19:44 pm por rub'n »
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
|
|
|
CalgaryCorpus
|
No deberias gastar tiempo en escribir los getters / setters o el metodo toString(). Los editores deberian hacerlo por ti. IntelliJ lo hace, al menos.
Otra alternativa es ni siquiera escribir el codigo, sino anotar la clase y que magicamente esos metodos se escriban y existan aunque no los veas. AutoValue y Lombok son 2 exponentes de esto.
|
|
|
En línea
|
|
|
|
rub'n
Desconectado
Mensajes: 1.217
(e -> λ("live now")); tatuar -> λ("α");
|
No deberias gastar tiempo en escribir los getters / setters o el metodo toString(). Los editores deberian hacerlo por ti. IntelliJ lo hace, al menos.
Otra alternativa es ni siquiera escribir el codigo, sino anotar la clase y que magicamente esos metodos se escriban y existan aunque no los veas. AutoValue y Lombok son 2 exponentes de esto.
Magicamente? o gracias a Reflection vía anotaciones? generando codigo en runtime, la chavala esta aprendiendo, por eso mi ejemplo.
Aunque me falto decirle eso. yo genere getters/setters/toString() con intelliJIDea, eclipse también lo hace, netBeans me imagino que también debería.
@CalgaryCorpus seria bueno que le pusieras un ejemplo de Project Lombok para que la ayudes.
Y de paso ah dia de hoy grandes Frameworks webs de java, potentes, tienen su implementacion de toString() sin api de terceros como lombok entre otras, de paso que toString() sirve para no mostrar el codigo hash directamente a alguien que espie dichos objetos. @Beginner Web , creas las variables de instancia que quieras, luego, teclas Alt + insertar, debería aparecerte este cuadro de contexto con las opciones que se muestran, no aparece toString() porque ya lo use, versión de NetBeans que tengo
* Product Version: NetBeans IDE 8.2 (Build 201610071157)
|
|
« Última modificación: 30 Marzo 2019, 19:34 pm por rub'n »
|
En línea
|
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen king
|
|
|
Beginner Web
Desconectado
Mensajes: 634
youtu.be/0YhflLRE-DA
|
interesante pero algo complicado por ahora
|
|
|
En línea
|
7w7
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Mostrar los atributos de una clase en vb.net
.NET (C#, VB.NET, ASP)
|
Lopardo
|
2
|
4,750
|
11 Diciembre 2010, 18:03 pm
por Lopardo
|
|
|
Cambiar atributos a todos los archivos usb.
Programación Visual Basic
|
Dany3j
|
6
|
4,892
|
23 Julio 2011, 12:13 pm
por Elemental Code
|
|
|
Método para convertir double a objeto
Programación C/C++
|
cNoob
|
1
|
1,737
|
20 Diciembre 2017, 23:26 pm
por srWhiteSkull
|
|
|
Valores de atributos del objeto en null
Java
|
Beginner Web
|
1
|
2,017
|
13 Abril 2019, 17:02 pm
por Beginner Web
|
|
|
mostrar por pantalla todos los enteros x tales que su cuadrado (x * x) se encuentre entre los valores
Java
|
atina
|
1
|
2,251
|
23 Febrero 2021, 00:48 am
por K-YreX
|
|