猿问

打印类中的所有变量值

我有一堂课,其中包含有关Person的信息,看起来像这样:


public class Contact {

    private String name;

    private String location;

    private String address;

    private String email;

    private String phone;

    private String fax;


    public String toString() {

        // Something here

    }

    // Getters and setters.

}

我想toString()返回this.name +" - "+ this.locations + ...所有变量。我试图使用反射来实现它,如该问题所示,但是我无法打印实例变量。


解决此问题的正确方法是什么?


偶然的你
浏览 723回答 3
3回答

江户川乱折腾

从实现toString:public String toString() {  StringBuilder result = new StringBuilder();  String newLine = System.getProperty("line.separator");  result.append( this.getClass().getName() );  result.append( " Object {" );  result.append(newLine);  //determine fields declared in this class only (no fields of superclass)  Field[] fields = this.getClass().getDeclaredFields();  //print field names paired with their values  for ( Field field : fields  ) {    result.append("  ");    try {      result.append( field.getName() );      result.append(": ");      //requires access to private field:      result.append( field.get(this) );    } catch ( IllegalAccessException ex ) {      System.out.println(ex);    }    result.append(newLine);  }  result.append("}");  return result.toString();}

一只甜甜圈

通用toString()一排,使用反射和样式自定义:import org.apache.commons.lang3.builder.ReflectionToStringBuilder;import org.apache.commons.lang3.builder.ToStringStyle;...public String toString(){  return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE);}
随时随地看视频慕课网APP

相关分类

Java
我要回答