如何写一个这样的函数,传入参数为一个对象,然后在这个函数里面就可以打印出这个对象的所有的字段的值!请问这个如何实现啊!今天去看了Java API的class类,没有发现什么可行的方法可以完成这种功能的.  虽然可以在这个对象的类里面实现一个这样的方法: print()
{
system.out.println(this.getFiled());
...........}
来实现打印,可是因为本人比较懒,不想对每一个类都想这样写get函数...请问有这样的简易方法吗??  还请大侠帮助啊!谢谢啦!

解决方案 »

  1.   

    在这个对象里面加一个toString()方法, 在toString()里面写打印所有字段的语句, 然后对可以直接打印这个对象了.
      

  2.   

    import java.lang.reflect.Field;class XY{
        private String x;
    }public class MainAssist {
        public static void main(String[] args) {
            Class type = XY.class;
            Field[] fields = type.getDeclaredFields();
            for (Field field: fields){
                System.out.println(field.getName());
            }
        }
    }
      

  3.   

    public class PrintUtil {    public static void print(Object o) throws IllegalArgumentException, IllegalAccessException{
          Field[] fs=o.getClass().getDeclaredFields();
          for(int i=0;i<fs.length;i++){
           System.out.println(fs[i].get(o));
          }
    }}
      

  4.   

    for (Field field: fields){
    ????????????????
      

  5.   

    public class XYZ {
        private String x = "1";    private String y = "2";    private String z = "3";    public String getX() {
            return x;
        }    public String getY() {
            return y;
        }    public String getZ() {
            return z;
        }
    }import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;public class MainAssist {
        public static void main(String[] args) {
            XYZ xyz = new XYZ();
            Class type = xyz.getClass();
            Method[] methods = type.getMethods();
            // Object[] os = null;
            for (Method method : methods) {
                if (method.getName().matches("get.*") && !method.getName().matches("getClass")) {
                    try {
                        System.out.println(method.getName() + ": " + method.invoke(xyz));
                    } catch (IllegalArgumentException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IllegalAccessException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (InvocationTargetException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
        }
    }
      

  6.   

    for (Method method : methods) 在1.4那里是不能用的啊?请问大侠怎么用啊??
      

  7.   

    呵呵..没问题,我自己把它转成一个for循环吧!
      

  8.   

    好了.谢谢各位大侠啦..尤其是:rcom10002(KNIGHTRCOM) ( ) 信誉:100 谢谢你啦.你的方法可以!同时也感谢各位关注此帖的大侠:shenpipi(皮皮),hemiao_1993(冷血动物) 等.