Java Tutorial/Reflection/Name
Содержание
- 1 Get full class name
- 2 Get the class name in a static method
- 3 Get the fully-qualified name of a class
- 4 Get the fully-qualified name of a inner class
- 5 Get the name of a class
- 6 Get the name of an array
- 7 Get the name of void
- 8 Get the unqualified name of a class
- 9 Getting the Name of a Member Object
- 10 Unqualified names
- 11 Use Class.forName to load a class
Get full class name
<source lang="java">
public class Main {
public static String getFullClassName(Class c) { return c.getName(); }
public static void main(String[] args) { System.out.println(getFullClassName(java.awt.Frame.class)); }
}</source>
Get the class name in a static method
<source lang="java">
public class Main{
public static void main(java.lang.String[] args) { System.out.println("in " + new CurrentClassGetter().getClassName() + " class"); }
}
class CurrentClassGetter extends SecurityManager { public String getClassName() { return getClassContext()[1].getName(); }
}</source>
Get the fully-qualified name of a class
<source lang="java">
public class Main {
public static void main(String[] argv) throws Exception { Class cls = java.lang.String.class; String name = cls.getName(); System.out.println(name); }
}</source>
Get the fully-qualified name of a inner class
<source lang="java">
public class Main {
public static void main(String[] argv) throws Exception { Class cls = java.util.Map.Entry.class; String name = cls.getName(); System.out.println(name); }
}</source>
Get the name of a class
<source lang="java">
import java.util.Calendar; import java.math.BigDecimal; public class Main {
public static void main(String[] args) { // Get the name of the classes below. Class clazz = String.class; System.out.println("Class Name: " + clazz.getName()); clazz = Calendar.class; System.out.println("Class Name: " + clazz.getName()); clazz = BigDecimal.class; System.out.println("Class Name: " + clazz.getName()); }
}</source>
Get the name of an array
<source lang="java">
public class Main {
public static void main(String[] argv) throws Exception { String name = boolean[].class.getName(); System.out.println(name); name = byte[].class.getName(); System.out.println(name); name = char[].class.getName(); System.out.println(name); name = short[].class.getName(); System.out.println(name); name = int[].class.getName(); System.out.println(name); name = long[].class.getName(); System.out.println(name); name = float[].class.getName(); System.out.println(name); name = double[].class.getName(); System.out.println(name); name = String[].class.getName(); System.out.println(name); name = int[][].class.getName(); System.out.println(name); }
}</source>
Get the name of void
<source lang="java">
public class Main {
public static void main(String[] argv) throws Exception { Class cls = Void.TYPE; String name = cls.getName(); // void }
}</source>
Get the unqualified name of a class
<source lang="java">
public class Main {
public static void main(String[] argv) throws Exception { Class cls = java.util.Map.Entry.class; String name = cls.getName(); if (name.lastIndexOf(".") > 0) { name = name.substring(name.lastIndexOf(".") + 1); // Map$Entry name = name.replace("$", "."); // Map.Entry } }
}</source>
Getting the Name of a Member Object
<source lang="java">
import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; public class Main {
public static void main(String[] argv) throws Exception { Class cls = java.lang.String.class; Method method = cls.getMethods()[0]; Field field = cls.getFields()[0]; Constructor constructor = cls.getConstructors()[0]; String name; name = cls.getName(); System.out.println(name); name = cls.getName() + "." + field.getName(); System.out.println(name); name = constructor.getName(); System.out.println(name); name = cls.getName() + "." + method.getName(); System.out.println(name); }
} /* java.lang.String java.lang.String.CASE_INSENSITIVE_ORDER java.lang.String java.lang.String.hashCode
- /</source>
Unqualified names
<source lang="java">
import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; public class Main {
public static void main(String[] argv) throws Exception { Class cls = java.lang.String.class; Method method = cls.getMethods()[0]; Field field = cls.getFields()[0]; Constructor constructor = cls.getConstructors()[0]; String name; name = cls.getName().substring(cls.getPackage().getName().length()+1); System.out.println(name); name = field.getName(); System.out.println(name); name = constructor.getName().substring(cls.getPackage().getName().length()+1); System.out.println(name); name = method.getName(); System.out.println(name); }
} /*String CASE_INSENSITIVE_ORDER String hashCode
- /</source>
Use Class.forName to load a class
<source lang="java">
import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; public class Main{
public static void main(String args[]) throws Exception { Class c = Class.forName("MyClass"); }
} class MyClass {
private int count; MyClass(int c) { count = c; } MyClass() { count = 0; } void setCount(int c) { count = c; } int getCount() { return count; } void showcount() { System.out.println("count is " + count); }
}</source>