Thinking in java中的一道题:
写一个方法,这个方法能接收一个对象,然后递归打印这个对象所属类系的所有类。import java.lang.reflect.*;
import java.util.regex.*;
import java.lang.Class;
import java.lang.Integer;class Base{}public class GetClass
{
static void f(Object x)
{
String s = x.getClass().toString();
System.out.println(s);
try
{
Class c = Class.forName(s);
Class[] c1 = c.getClasses();
for(int i=0; i<c1.length; i++)
{
System.out.println(c1);
}
}
catch(ClassNotFoundException e)
{
System.out.println("Error");
}
}
public static void main(String[] args)
{
f(new Base()); }
}运行结果:
        class Base
        Error
请问为什么会有异常?
如果大家有好的方法解决这个问题,请贴上,谢谢!!

解决方案 »

  1.   

    经验告诉我问题应该出现在这里
    String s = x.getClass().toString();
    System.out.println(s);
    s的类名称不对吧,根据你在上一行代码输出应该叫做Base而非class Base
      

  2.   

    我找到方法了,不过好像很麻烦,谢谢前面那位大哥!
    import java.lang.reflect.*;
    import java.util.regex.*;
    import java.lang.Class;
    import java.lang.Integer;class Base{}
    class Derived extends Base{}
    class Derived1 extends Derived{}public class GetClass
    {
    static void f(Object x)
    {
    String s = x.getClass().toString().Replace("class ","");
    try
    {
    Class c = Class.forName(s);
    Class c1 = c.getSuperclass();
    System.out.println(c1);
    if(c1 != null)
    {
    Object o = c1.newInstance();
    f(o);
    }
    }
    catch(ClassNotFoundException e)
    {
    System.out.println("Error");
    }
    catch(InstantiationException e)
    {
    System.out.println("Error1");
    }
    catch(IllegalAccessException e)
    {
    System.out.println("Error2");
    }
    }
    public static void main(String[] args)
    {
    f(new Derived1()); }
    }
    发现不会用正则表达式
      

  3.   

    忘了写上个程序的结果了:
    class Derived
    class Base
    class java.lang.Object
    null