如何使用反射从静态方法获取类名

时间:2011-02-15 15:56:44

标签: java reflection

我正在寻找一种方法来获取类的类名,并调用静态方法。

例如:

public  class MySuperClass{
    public static String getClassName(){
        //some trick here...
    }
}

public  class MyInheritingClass extends MySuperClass{
        //some interesting code here...
        public static void main(String [ ] args){
            System.out.println(MyInheritingClass.getClassName());
            //this should output "MyInheritingClass" and NOT "MySuperClass"
        }
    }

知道如何解决这个问题吗? 感谢

4 个答案:

答案 0 :(得分:4)

public  class MyInheritingClass extends MySuperClass{
    //some interesting code here...
    public static void main(String [ ] args){
        System.out.println(MyInheritingClass.getClassName());
        //this should output "MyInheritingClass" and NOT "MySuperClass"
    }
}

这是一种非常误导的调用静态方法的方法。这应该是非法的。静态方法不是虚拟的。绝对没有办法做你想做的事。

答案 1 :(得分:1)

  

这应该输出“MyInheritingClass”而不是“MySuperClass”

那么为什么不呢:

MyInheritingClass.class.getSimpleName()

答案 2 :(得分:1)

试试这个:

public  class MySuperClass{
    public  String getClassName(){
        return getClass().getName();
    }
}


public  class MyInheritingClass extends MySuperClass{
    public static void main(String [ ] args){
        System.out.println(new MyInheritingClass().getClassName());
    }
}

答案 3 :(得分:-3)

试试这个

this.getClass().getCanonicalName()