Descuento de otoño
Universidad de Java
Aprendizaje
Cursos
Tareas
Cuestionarios y controles
Juegos
Ayuda
Horario para collejas
Becarios
Comunidad
Usuarios
Foro
Chat
Artículos
Casos de éxito
Actividades
Comentarios
Suscripciones
Tema claro
Artículo
  • Comentarios
  • Sobre nosotros
  • CS50
Comenzar
Empezar a aprender
  • Artículos
  • Autores
  • Todos los grupos
  • Lista de todos los artículos
JavaRush /Blog de Java /Random-ES /Cómo anular efectivamente el método ToString() usando ToS...
dio
Nivel 16
  • 28 febrero 2021
  • 491 views
  • 0 comments

Cómo anular efectivamente el método ToString() usando ToStringBuilder.

Publicado en el grupo Random-ES
Java-университет
ToStringBuilder es una clase auxiliar proporcionada por la biblioteca de idiomas Apache Commons . ToStringBuilder es una clase de utilidad proporcionada por las bibliotecas Apache Commons Lang. Proporciona un control completo y mejor sobre qué datos de objeto y cuántos deben generarse mediante el método toString(), así como en qué formato. ToStringBuilder le ayuda a evitar escribir mucho código al eliminar la necesidad de anular el método ToString() en las clases secundarias. ToStringBuilder se puede utilizar para crear una especie de plantilla para aprovechar al máximo las capacidades que proporciona. Para incluir Commons-Lang en su proyecto, agregue las siguientes dependencias a su archivo de configuración de Maven. En este artículo, daré algunos ejemplos de uso que pueden considerarse como mejores prácticas para anular el método ToString() en las clases de su próxima aplicación. Para demostrar las diferentes posibilidades de usar ToStringBuilder para construir el método toString() en diferentes escenarios, crearé tres modelos: AbstractUser.java, WebUser.java y GuestUser.java. commons-lang commons-lang 2.5
ResumenUsuario.java
package com.howtodoinjava.model; import java.io.Serializable; import org.apache.commons.lang.builder.ToStringBuilder; import com.howtodoinjava.style.CustomToStringStyle; public abstract class AbstractUser implements Serializable { private static final long serialVersionUID = 1L; private int id; private String firstName; private String lastName; private String age; //Setterss and getters }
Usuario Web.java
public class WebUser extends AbstractUser { private static final long serialVersionUID = 1L; private Date lastLoggedIn; public Date getLastLoggedIn() { return lastLoggedIn; } public void setLastLoggedIn(Date lastLoggedIn) { this.lastLoggedIn = lastLoggedIn; } }
UsuarioInvitado.java
public class GuestUser extends WebUser { private static final long serialVersionUID = 1L; private String location; public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } }
Varios casos de uso
1) todas las clases secundarias utilizan el método toString() de la superclase.
Puede anular el método toString() en la clase de objeto de nivel superior, es decir. en nuestro caso AbstractUser.java. Este método lo utilizan todas las clases secundarias a menos que contengan su propia versión del método toString(). @Override public String toString() { return ToStringBuilder.reflectionToString(this); } El método ToString() anterior es capaz de proporcionar toda la información disponible sobre la clase actual; también funcionará en subclases a menos que la subclase anule el método ToString(). package com.howtodoinjava; import java.util.Date; import com.howtodoinjava.model.GuestUser; import com.howtodoinjava.model.WebUser; public class ToStringDemoUsage { public static void main(String[] args) { GuestUser guest = getGuestUser(); System.out.println(guest); } public static GuestUser getGuestUser() { GuestUser user = new GuestUser(); user.setId(100); user.setFirstName("Lokesh"); user.setLastName("Gupta"); user.setAge("30"); user.setLastLoggedIn(new Date()); user.setLocation("New Delhi"); return user; } } Output: com.howtodoinjava.model.GuestUser@d1f24bb[location=New Delhi,lastLoggedIn=Mon Jun 03 13:31:05 IST 2013,id=100,firstName=Lokesh,lastName=Gupta,age=30]
2) Formato personalizado de cualquier tipo, como Datos
Puede aplicar un formato personalizado a cualquier campo del método ToString. A continuación se muestra un ejemplo de formato personalizado: package com.howtodoinjava.style; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.lang.builder.ToStringStyle; public class CustomToStringStyle extends ToStringStyle { private static final long serialVersionUID = 1L; protected void appendDetail(StringBuffer buffer, String fieldName, Object value) { if (value instanceof Date) { value = new SimpleDateFormat("yyyy-MM-dd").format(value); } buffer.append(value); } } Para usar el formato, colóquelo en un método como este: @Override public String toString() { return ToStringBuilder.reflectionToString(this, new CustomToStringStyle()); } Output: com.howtodoinjava.model.GuestUser@7910769b[location=New Delhi,lastLoggedIn=2013-06-03,id=100,firstName=Lokesh,lastName=Gupta,age=30]
3) Utilice información de la superclase en la subclase con una sencilla llamada al método
Si desea anular ToString() en una clase secundaria para agregar algo a la información recibida de la superclase, hágalo así: public class WebUser extends AbstractUser { //Other code @Override public String toString() { return new ToStringBuilder(this) .appendSuper(super.toString()) .append("lastLoggedIn", lastLoggedIn).toString(); } } Output: com.howtodoinjava.model.GuestUser@22aed3a5[location=New Delhi,lastLoggedIn=2013-06-03,id=100,firstName=Lokesh,lastName=Gupta,age=30,CustomMessage=I have been added additionally]
4) Uso de información solo hasta un cierto nivel de la jerarquía de herencia
Supongamos que en alguna clase hija necesitas expandir los campos de todas las superclases, puedes incluir información hasta un cierto nivel de la jerarquía de herencia de la siguiente manera: public class GuestUser extends WebUser { @Override public String toString() { return ToStringBuilder.reflectionToString(this,new CustomToStringStyle(),true,WebUser.class); } } Output: com.howtodoinjava.model.GuestUser@18dd7404[location=New Delhi,lastLoggedIn=2013-06-03]
5) Muestra solo la información que deseas
A veces no deseas incluir todos los campos de una clase en el método ToString(). Entonces puedes hacerlo así: public abstract class AbstractUser implements Serializable { //Other code @Override public String toString() { return new ToStringBuilder(this) .append("firstName", firstName) .append("lastName", lastName) .append("age", age).toString(); } } public class GuestUser extends WebUser { //Other code @Override public String toString() { return new ToStringBuilder(this) .appendSuper(super.toString()) .append("location", location).toString(); } } Output: com.howtodoinjava.model.GuestUser@6483dae1[firstName=Lokesh,lastName=Gupta,age=30,location=New Delhi] Puedes descargar el código fuente de los ejemplos anteriores desde este enlace. Descargar fuente Artículo original: Cómo anular toString() de manera efectiva con ToStringBuilder Traducido
Telegram
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Aprender
  • Курси програмування
  • Registro
  • Curso de Java
  • Ayuda con las tareas
  • Precios
  • Proyectos de juegos
Comunidad
  • Usuarios
  • Artículos
  • Foro
  • Chat
  • Casos de éxito
  • Actividades
Empresa
  • Información sobre nosotros
  • Contactos
  • Comentarios
  • Preguntas frecuentes
  • Soporte
JavaRush JavaRush es un curso por Internet para aprender programación en Java desde cero. Este curso es la manera perfecta para que los principiantes dominen Java. Ofrece más de 1200 tareas con comprobación instantánea y contenidos teóricos esenciales sobre los fundamentos de Java. Para ayudarte a triunfar en tu formación, hemos implementado una serie de características motivadoras: controles, proyectos de programación y contenidos sobre aprendizaje eficiente y para tu carrera profesional como desarrollador Java.
Síguenos
Los programadores no nacen, se hacen © 2025 JavaRush
Descargar aplicación
  • Google Play
  • App Store
Mastercard Visa
Los programadores no nacen, se hacen © 2025 JavaRush