我正在寻找一种方法来获取类的类名,并调用静态方法。
例如:
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"
}
}
知道如何解决这个问题吗? 感谢
答案 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()