为了账号安全,请及时绑定邮箱和手机立即绑定

打印类中的所有变量值

打印类中的所有变量值

偶然的你 2019-10-18 10:46:09
我有一堂课,其中包含有关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 + ...所有变量。我试图使用反射来实现它,如该问题所示,但是我无法打印实例变量。解决此问题的正确方法是什么?
查看完整描述

3 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

从实现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();

}


查看完整回答
反对 回复 2019-10-18
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

通用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);

}


查看完整回答
反对 回复 2019-10-18
  • 3 回答
  • 0 关注
  • 722 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信