如何使用getClass()获取父类名称.getSuperclass()?

时间:2013-12-24 09:46:38

标签: java

我正在尝试使用

获取父类名称
public class ClassA  extends Draw{

    public ClassA(){
        super();
    }
    .....

} 
 public class ClassC {

    public getParent(Object a_class)
    {

        String superClass= a_class.getClass().getSuperclass().toString();

    }

}

我收到以下错误

Exception in thread "main" java.lang.StackOverflowError
    at Draw.<init>(Draw.java:2)
    at ClassA.<init>(ClassA.java:2)
    at ClassA.<init>(ClassA.java:5)
    at ClassA.<init>(ClassA.java:5)
    at ClassA.<init>(ClassA.java:5)
    at ClassA.<init>(ClassA.java:5)

如何获取父类名称 我需要父类名称如何获取

3 个答案:

答案 0 :(得分:8)

使用Class.getName()

String superClass = a_class.getClass().getSuperclass().getName();

要获取名称而不是包名称,请使用Class.getSimpleName()

String superClass = a_class.getClass().getSuperclass().getSimpleName();

但是,a_class已经是Class个实例,因此您可能希望改为使用a_class.getSuperclass()

答案 1 :(得分:3)

我想你只想要

super.getClass().getName();

或可能

super.getClass().getCanonicalName();

或者,您可以使用

this.getClass().getSuperclass().getName(); // <-- or getCanonicalName()

答案 2 :(得分:0)

super.getClass().getName(); or
yourClass.getClass().getSuperclass().getName();

应该可以正常工作