If we want to get the currently running class name, how to get it?
In the Class class, there is the following method:
For example, there is now a class Demo7.java
package pxx.test1; public class Demo7 { public static void main(String[] args) { Demo7 demo7 = new Demo7(); System.out.println(demo7.getClass().getName()); } }
Run result:
The above is directly calling getClass() on this object to get the Class object, and then calling getName () Get the running class name.
So if a class inherits a class, how to get the current class name and the parent class name
Demo8.java
package pxx.test1; public class Demo8 { int num; String name; public Demo8(){}; }
Demo9.java
package pxx.test1; public class Demo9 extends Demo8 { public void test() { System.out.println(super.getClass().getName()); } public static void main(String[] args) { new Demo9().test(); } }
Above we used super to call a getClass() method, and then get the class name. What needs to be noted here is that super can only call non-static methods of the parent class. , and cannot be called in a static method, because super, like this, is based on object operations. Speaking of which, getClass() of the parent class is called here, so I want to get the class name of the parent class. Well, after running
, I still can’t get the class name of the parent class. , then let’s take a look at the geClass() method. This method is in the Object object.
It turns out that this method is final, that is to say, this method is inherited by other classes. Yes, but it cannot be overridden. Therefore, this.getClass and super.getClass ultimately call the getClass method in the Object class, and the definition of this method is to return the runtime class of Object, so the above will return its own class. name instead of the parent class name.
So how to get the name of the parent class?
Let’s go to the Class class to take a look and find the following method:
The above means, Will return the parent class of the current calling class. After getting the parent class, we can still use getName() to get the name. The above code
package pxx.test1; public class Demo9 extends Demo8 { public void test() { System.out.println(super.getClass().getSuperclass().getName()); } public static void main(String[] args) { new Demo9().test(); } }
Running results:
In this way, we get the class name of the parent class
The above is the detailed content of How to get the class name in java. For more information, please follow other related articles on the PHP Chinese website!