Exception in thread "main" java.lang.NullPointerException
    at ObjectAnalyzer.toString(ObjectAnalyzerTest.java:60)
    at ObjectAnalyzerTest.main(ObjectAnalyzerTest.java:22)
谢谢大家!源代码如下:import java.lang.reflect.*;
import java.util.*;
import java.text.*;public class ObjectAnalyzerTest
{
public static void main (String[] args) 
{
Date d=new Date();
System.out.println(new ObjectAnalyzer().toString(d));
}
}class ObjectAnalyzer
{
public String toString(Object obj)
{
if(obj==null)
return "null";
if(visited.contains(obj))
return "...";
visited.add(obj);
Class c1=obj.getClass();
if(c1==String.class)
return (String)obj;
if(c1.isArray())
{
String r=c1.getComponentType()+"[]{";
for(int i=0;i<Array.getLength(obj);i++)
{
if(i>0)
r+=",";
Object val=Array.get(obj,i);
if(c1.getComponentType().isPrimitive())
r+=val;
else
r+=toString(val);
}
return r+"}";
}

String r=c1.getName();
do
{
r+="{";
Field[] fields=c1.getDeclaredFields();
AccessibleObject.setAccessible(fields,true);
/*for(Field f :fields)
System.out.println(f.getName());*/
for(Field f :fields)
{
//if(!Modifier.isStatic(f.getModifiers()))
//{
if(!r.endsWith("["))
r+=",";
r+=f.getName()+"=";
try
{
Class t=f.getType();
Object val=f.get(obj);
if(t.isPrimitive())
r+=val;
else
r+=toString(val);
}
catch(Exception e){
System.out.println(e.toString());
System.out.println("hello");
}
// }
r+="}";
c1=c1.getSuperclass();
}
}while(c1!=Object.class);

return r;

}

private ArrayList<Object> visited = new ArrayList<Object>();
}