根据万物皆对象的思想,先创建要获取类的对象,在这里类就是我们的对象。我们要获取整个类的类名,属性,构造函数以及方法。
获取修饰符的方法是:
int modifiers=(class)c.getModifiers(),返回值是一个(int),使用 Modifier.toString(modifiers);
获取属性的方法:
Field[] fields = c.getDeclaredFields();
类型:field.getType();
获取方法的方法:
c.getDeclaredMethods();
获取构造函数的方法:
c.getDeclaredConstructors();
获取类
Class c = Class.forName("com.pro.domain.Users");//
StringBuilder bf=new StringBuilder();
//类的访问修饰符
int modifiers = c.getModifiers();
String classModif = Modifier.toString(modifiers);
bf.append(classModif+" class "+c.getSimpleName()+"{");
类的名字是包名加类名:
获取属性
Field[] fields = c.getDeclaredFields();
for (Field field : fields) {
//取属性的访问修饰符
String propertyModify=Modifier.toString(field.getModifiers());
//取属性的类型
Class propertyType = field.getType();
String propertyTypeName = propertyType.getSimpleName();
//取属性的名称
String propertyName = field.getName();
bf.append("\n\t"+propertyModify+" "+propertyTypeName+" "+propertyName+";");
}
获取方法
//方法
Method[] methods = c.getDeclaredMethods();
for (Method method : methods) {
//1,方法的访问修饰符
String methodModify=Modifier.toString(method.getModifiers());
//2,方法的返回类型
Class returnType = method.getReturnType();
String methodReturnTypeName = returnType.getSimpleName();
//3
String methodName = method.getName();
bf.append("\n\t"+methodModify+" "+methodReturnTypeName+" "+methodName+"(");
//4,方法参数
Class[] parameterTypes = method.getParameterTypes();
for(int i=0;i<parameterTypes.length;i++){
if(i==parameterTypes.length-1){
bf.append(parameterTypes[i].getSimpleName());
}else{
bf.append(parameterTypes[i].getSimpleName()+",");
}
}
//4
bf.append("){\n\t}");
}
获取构造函数
//构造
Constructor[] constructors = c.getDeclaredConstructors();
for (Constructor ct : constructors) {
//1
String constrModify=Modifier.toString(ct.getModifiers());
//2
String constrName = ct.getName();
bf.append("\n\t"+constrModify+" "+constrName+"(){\n\t}");
}
bf.append("\n}");
System.out.println(bf);
完整代码
private static void b() throws ClassNotFoundException {
Class c = Class.forName("com.pro.domain.Users");
StringBuilder bf=new StringBuilder();
//类的访问修饰符
int modifiers = c.getModifiers();
String classModif = Modifier.toString(modifiers);
bf.append(classModif+" class "+c.getSimpleName()+"{");
Field[] fields = c.getDeclaredFields();
for (Field field : fields) {
//取属性的访问修饰符
String propertyModify=Modifier.toString(field.getModifiers());
//取属性的类型
Class propertyType = field.getType();
String propertyTypeName = propertyType.getSimpleName();
//取属性的名称
String propertyName = field.getName();
bf.append("\n\t"+propertyModify+" "+propertyTypeName+" "+propertyName+";");
}
//方法
Method[] methods = c.getDeclaredMethods();
for (Method method : methods) {
//1,方法的访问修饰符
String methodModify=Modifier.toString(method.getModifiers());
//2,方法的返回类型
Class returnType = method.getReturnType();
String methodReturnTypeName = returnType.getSimpleName();
//3
String methodName = method.getName();
bf.append("\n\t"+methodModify+" "+methodReturnTypeName+" "+methodName+"(");
//4,方法参数
Class[] parameterTypes = method.getParameterTypes();
for(int i=0;i<parameterTypes.length;i++){
if(i==parameterTypes.length-1){
bf.append(parameterTypes[i].getSimpleName());
}else{
bf.append(parameterTypes[i].getSimpleName()+",");
}
}
//4
bf.append("){\n\t}");
}
//构造
Constructor[] constructors = c.getDeclaredConstructors();
for (Constructor ct : constructors) {
//1
String constrModify=Modifier.toString(ct.getModifiers());
//2
String constrName = ct.getName();
bf.append("\n\t"+constrModify+" "+constrName+"(){\n\t}");
}
bf.append("\n}");
System.out.println(bf);
/* */
}