Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.lang.reflect.*;
- /**
- * Get basic information about a class by reflection.
- */
- public class Jook {
- public static void main(String[] args) {
- if (args.length == 0) {
- System.out.println("Usage: java Jook classname");
- System.exit(0);
- }
- try {
- Class<?> clazz = Class.forName(args[0]);
- Class<?> superClazz = clazz.getSuperclass();
- String modifiers = Modifier.toString(clazz.getModifiers());
- if (superClazz != null && superClazz != Object.class) {
- System.out.println(String.format("%s class %s extends %s {", modifiers, clazz.getName(),
- superClazz.getName()));
- } else {
- System.out.println(String.format("%s class %s {", modifiers, clazz.getName(),
- superClazz.getName()));
- }
- System.out.println(" Constructor:");
- printConstructors(clazz);
- System.out.println(" Method:");
- printMethods(clazz);
- System.out.println(" Field:");
- printFields(clazz);
- System.out.println("}");
- } catch (ClassNotFoundException e) {
- System.out.println("Not found class!");
- }
- }
- public static void printConstructors(Class<?> clazz) {
- Constructor[] constructors = clazz.getDeclaredConstructors();
- for (Constructor constructor : constructors) {
- String modifiers = Modifier.toString(constructor.getModifiers());
- Class<?>[] paramTypes = constructor.getParameterTypes();
- String[] paramTypesName = new String[paramTypes.length];
- for (int i = 0; i < paramTypes.length; ++i) {
- paramTypesName[i] = paramTypes[i].getName();
- }
- System.out.println(String.format("\t%s %s(%s);", modifiers, constructor.getName(),
- String.join(", ", paramTypesName)));
- }
- }
- public static void printMethods(Class<?> clazz) {
- Method[] methods = clazz.getDeclaredMethods();
- for (Method method : methods) {
- String modifiers = Modifier.toString(method.getModifiers());
- Class<?> returnType = method.getReturnType();
- Class<?>[] paramTypes = method.getParameterTypes();
- String[] paramTypesName = new String[paramTypes.length];
- for (int i = 0; i < paramTypes.length; ++i) {
- paramTypesName[i] = paramTypes[i].getName();
- }
- System.out.println(String.format("\t%s %s %s(%s);", modifiers, returnType.getName(),
- method.getName(), String.join(", ", paramTypesName)));
- }
- }
- public static void printFields(Class<?> clazz) {
- Field[] fields = clazz.getDeclaredFields();
- for (Field field : fields) {
- String modifiers = Modifier.toString(field.getModifiers());
- System.out.println(String.format("\t%s %s %s", modifiers, field.getType().getName(),
- field.getName()));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement