Java i RTTI

0

Witam
Mam napisać program, który wypisze wszystkie nazwy klas bazowych związane z danym obiektem (całą hierarchie rekurencyjnie). Napisałem coś takiego:

class GetInfo {
    public static String infoString(final Object obj)  throws InstantiationException, IllegalAccessException  {
        Class classObj = obj.getClass();
        if(classObj.getSuperclass() == null) return "";
        else
            return infoString(classObj.getSuperclass().newInstance()) + classObj.getSimpleName();
        
    }
} 

class A  {}
class B extends A {B (int i) {}}
class C extends B { C() {super(6);}}

public class Main {
    public static void main(String[] args)  {
        try {
            System.out.print(GetInfo.infoString(new C()));
        }
        catch(InstantiationException e) {
            System.out.print("Instantation Exception");
        }
        catch(IllegalAccessException e) {
            System.out.print("Illegal Access Exception");
        }

    }
}

Ten kod działa jedynie dla klas wyłącznie posiadających domyślny konstruktor natomiast gdy któraś z klas nie ma domyślnego konstruktora wyrzuca mi wyjątek. Czy ktoś może wie co trzeba zrobić, żeby kod działał dla wszystkich klas?
Pozdrawiam

0
class GetInfo {
    public static String infoString(final Object obj) {
      if (obj!=null)
        return infoString(obj.getClass());
      else
        return "null";
    }
    public static String infoString(final Class clazz)
    {
      if (clazz!=null)
        return clazz.getSimpleName()+ " "+infoString(clazz.getSuperclass());
      else return "";
    }
}

class A  {}
class B extends A {B (int i) {}}
class C extends B { C() {super(6);}}

public class Main {
    public static void main(String[] args)  {
            System.out.print(GetInfo.infoString(new C()));
    }
}
0

Dzięki wielkie hurikhan :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1