Java Tutorial/Class Definition/toString

Материал из Java эксперт
Перейти к: навигация, поиск

Jakarta Commons toString Builder

   <source lang="java">

import org.apache.rumons.lang.builder.ToStringBuilder; import org.apache.rumons.lang.builder.ToStringStyle; public class Main {

 private String id;
 private String firstName;
 private String lastName;
 public Main() {
 }
 public String toString() {
   return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("id", id).append(
       "firstName", firstName).append("lastName", lastName).toString();
 }
 public static void main(String[] args) {
   Main example = new Main();
   example.id = "1";
   example.firstName = "First Name";
   example.lastName = "Last Name";
   System.out.println("example = " + example);
 }

}</source>





override the toString method in your classes

   <source lang="java">

public class MainClass {

 public static void main(String[] args) {
   Employee emp = new Employee("Martinez", "Anthony");
   System.out.println(emp.toString());
 }

} class Employee {

 private String lastName;
 private String firstName;
 public Employee(String lastName, String firstName) {
   this.lastName = lastName;
   this.firstName = firstName;
 }
 public String toString() {
   return "Employee[" + this.firstName + " " + this.lastName + "]";
 }

}</source>





Override toString() for Box class.

   <source lang="java">

class Box {

 double width;
 double height;
 double depth;
 Box(double w, double h, double d) {
   width = w;
   height = h;
   depth = d;
 }
 public String toString() {
   return "Dimensions are " + width + " by " + depth + " by " + height + ".";
 }

} class toStringDemo {

 public static void main(String args[]) {
   Box b = new Box(10, 12, 14);
   String s = "Box b: " + b; // concatenate Box object
   System.out.println(b); // convert Box to string
   System.out.println(s);
 }

}</source>





Reflection based toString() utilities

   <source lang="java">

import java.lang.reflect.Field; public class Main {

 String hello = "world";
 int i = 42;
 public static void main(String args[]) {
   System.out.println(Util.toString(new MyClass()));
   
   System.out.println(Util.toString(new MyAnotherClass()));
 }

} class Util {

 public static String toString(Object o) {
   StringBuilder sb = new StringBuilder();
   toString(o, o.getClass(), sb);
   return o.getClass().getName()+ "\n"+sb.toString();
 }
 private static void toString(Object o, Class clazz, StringBuilder sb) {
   Field f[] = clazz.getDeclaredFields();
   for (int i = 0; i < f.length; i++) {
     f[i].setAccessible(true);
     try {
       sb.append(f[i].getName() + "=" + f[i].get(o)+"\n");
     } catch (Exception e) {
       e.printStackTrace();
     }
   }
   if (clazz.getSuperclass() != null)
     toString(o, clazz.getSuperclass(), sb);
 }

} class MyClass {

 int i = 1;
 private double d = 3.14;

} class MyAnotherClass extends MyClass{

 int f = 9;

}</source>





Use a generic toString()

   <source lang="java">

import java.lang.reflect.Field; public class Main {

 public static void main(String args[]) {
   System.out.println(new MyClass().toString());
 }

} class MyClass {

 String hello = "hi";
 int i = 0;
 public String toString() {
   StringBuilder sb = new StringBuilder();
   Class cls = getClass();
   Field[] f = cls.getDeclaredFields();
   for (int i = 0; i < f.length; i++) {
     f[i].setAccessible(true);
     try {
       sb.append(f[i].getName()+"="+ f[i].get(this)+"\n");
     } catch (Exception e) {
       e.printStackTrace();
     }
   }
   if (cls.getSuperclass().getSuperclass() != null) {
     sb.append("super:"+ super.toString()+"\n");
   }
   return cls.getName()+"\n" + sb.toString();
 }

}</source>





Use Reflection To build toString method

   <source lang="java">

import org.apache.rumons.lang.builder.ReflectionToStringBuilder; import org.apache.rumons.lang.builder.ToStringStyle; public class Main {

 private Integer id;
 private String name;
 private String description;
 public static final String KEY = "APP-KEY";
 private transient String secretKey;
 public Main(Integer id, String name, String description, String secretKey) {
   this.id = id;
   this.name = name;
   this.description = description;
   this.secretKey = secretKey;
 }
 public String toString() {
   return ReflectionToStringBuilder.toString(this, ToStringStyle.SIMPLE_STYLE, true, true);
 }
 public static void main(String[] args) {
   Main demo = new Main (1, "A", "B", "C");
   System.out.println("Demo = " + demo);
 }

}</source>