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
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));
  }
}
   
   
Get the class name in a static method
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();
  }
}
   
   
Get the fully-qualified name of a class
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);
  }
}
   
   
Get the fully-qualified name of a inner class
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);
  }
}
   
   
Get the name of a class
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());
  }
}
   
   
Get the name of an array
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);
  }
}
   
   
Get the name of void
public class Main {
  public static void main(String[] argv) throws Exception {
    Class cls = Void.TYPE;
    String name = cls.getName(); // void
  }
}
   
   
Get the unqualified name of a class
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
    }
  }
}
   
   
Getting the Name of a Member Object
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
*/
   
   
Unqualified names
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
*/
   
   
Use Class.forName to load a class
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);
  }
}
   
