中间有写的不好的地方,以后也会相应的更新,还望各位大佬多多指教
其中只能打印出方法的,不能打印出方法里面的内容。
public class Test001 {
public static void main(String[] args) {
//Object是要打印的类
Class class1 = Object.class;
// 获取类的包
Package package1 = class1.getPackage();
String packageName = package1.getName();
// 打印包
System.out.println(packageName);
System.out.println();
// 创建一个buffer拼接第一行
StringBuffer buffer1 = new StringBuffer();
// 获取类的修饰权限
String classModifier = Modifier.toString(class1.getModifiers());
buffer1.append(classModifier + " ");
// 获取类的名字
String className = class1.getSimpleName();
if (!class1.isInterface()) {
buffer1.append("class " + className + " ");
}else {
buffer1.append(className+" ");
}
// 获取继承的类
if (class1.getSuperclass() != null) {
String superClassName = class1.getSuperclass().getSimpleName();
buffer1.append("extends " + superClassName + " ");
}
// 获取实现的接口
Class[] interfacesNames = class1.getInterfaces();
for (int i = 0; i < interfacesNames.length; i++) {
if (i == 0) {
buffer1.append("implements " + interfacesNames[i].getSimpleName());
} else {
buffer1.append("," + interfacesNames[i]);
}
}
buffer1.append("{");
// 打印出类的第一行
System.out.println(buffer1.toString());
System.out.println();
// 获取类中的所有字段权限、类型和名字并打印
Field[] classFields = class1.getDeclaredFields();
for (int i = 0; i < classFields.length; i++) {
System.out.println(Modifier.toString(classFields[i].getModifiers()) + " "
+ classFields[i].getType().getSimpleName() + " " + classFields[i].getName() + ";");
}
System.out.println();
// 获取所有的构造方法
Constructor[] declaredConstructors = class1.getDeclaredConstructors();
for (int i = 0; i < declaredConstructors.length; i++) {
StringBuffer buffer2 = new StringBuffer();
Constructor constructor = declaredConstructors[i];
// 获取方法的权限并拼接
buffer2.append(Modifier.toString(constructor.getModifiers()));
buffer2.append(" " + className + "(");
//
Class[] constructorParameterTypes = constructor.getParameterTypes();
Parameter[] parameters = constructor.getParameters();
for (int j = 0; j < constructorParameterTypes.length; j++) {
String constructorParameterName = constructorParameterTypes[j].getSimpleName();
if (j == 0) {
buffer2.append(constructorParameterName + " " + parameters[j].getName());
} else {
buffer2.append("," + constructorParameterName + " " + parameters[j].getName());
}
}
buffer2.append("){" + System.getProperty("line.separator") + System.getProperty("line.separator"));
String genericString = constructor.toGenericString();
buffer2.append("}");
System.out.println(buffer2.toString());
}
System.out.println();
// 方法的获取与打印
StringBuffer buffer3 = new StringBuffer();
Method[] methods = class1.getMethods();
for (int i = 0; i < methods.length; i++) {
String mothodModifer = Modifier.toString(methods[i].getModifiers());
buffer3.append(mothodModifer + " ");
Class mothodReturnType = methods[i].getReturnType();
String simpleName = mothodReturnType.getSimpleName();
buffer3.append(simpleName + " ");
String mothodName = methods[i].getName();
buffer3.append(mothodName + " (");
Class[] parameterTypes = methods[i].getParameterTypes();
Parameter[] parameters = methods[i].getParameters();
for (int j = 0; j < parameterTypes.length; j++) {
String simpleName2 = parameterTypes[j].getSimpleName();
String name = parameters[j].getName();
if (j == 0) {
buffer3.append(simpleName2 + " " + name);
} else {
buffer3.append("," + simpleName2 + " " + name);
}
}
buffer3.append("){" + System.getProperty("line.separator"));
buffer3.append("}" + System.getProperty("line.separator"));
System.out.println(buffer3.toString());
buffer3.delete(0, buffer3.length());
}
}
}