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
请问为什么会有异常?
如果大家有好的方法解决这个问题,请贴上,谢谢!!
写一个方法,这个方法能接收一个对象,然后递归打印这个对象所属类系的所有类。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
请问为什么会有异常?
如果大家有好的方法解决这个问题,请贴上,谢谢!!
String s = x.getClass().toString();
System.out.println(s);
s的类名称不对吧,根据你在上一行代码输出应该叫做Base而非class Base
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()); }
}
发现不会用正则表达式
class Derived
class Base
class java.lang.Object
null