待会儿需要用到的user对象定义:
package bean;
public class User implements Comparable<User>{
private String username;
private String password;
public User() {
username = password = "";
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
/**
* 按用户名排序
*/
@Override
public int compareTo(User u) {
return this.username.compareTo(u.getUsername());
}
//省略getters和setters
}
反射代码
package core1;
import java.lang.reflect.*;
public class D08_Reflect {
public static void main(String[] args){
//打印类的消息信息
D08_Reflect.printClass("bean.User");
}
public static void printClass(String className){
//使用反射输出bean.User的类信息
Class aClass = null;
try {
aClass = Class.forName(className);
} catch (ClassNotFoundException e) {
e.printStackTrace();
return ;
}
//获取类的修饰符:public,static等
int classModifiers = aClass.getModifiers();
//获取类的名称
//String className = userClass.getName();
//获取父类信息
Class superclass = aClass.getSuperclass();
//打印类信息
System.out.printf(Modifier.toString(classModifiers) + " " + className);
if(superclass != null && superclass != Object.class)
System.out.printf("extends " + superclass.getName());
System.out.println("{");
//获取类的所有域
Field[] fields = aClass.getDeclaredFields();
printFields(fields);
//获取所有的构造器
Constructor[] constructors = aClass.getDeclaredConstructors();
printConstructors(constructors);
//获取所有的方法
Method[] methods = aClass.getDeclaredMethods();
printMethods(methods);
System.out.println("}");
}
private static void printMethods(Method[] methods) {
for(Method m : methods){
int modifiers = m.getModifiers();
String name = m.getName();
System.out.printf("\t" + Modifier.toString(modifiers) + " " + name + "(");
Class<?>[] parameterTypes = m.getParameterTypes();
if(parameterTypes.length > 0){
StringBuffer sb = new StringBuffer(parameterTypes[0].getName());
for(int i=1 ; i<parameterTypes.length ; i++){
sb.append(", " + parameterTypes[i].getName());
}
System.out.printf("" + sb.toString());
}
System.out.println(");");
}
}
private static void printConstructors(Constructor[] constructors) {
for(Constructor c : constructors){
int modifiers = c.getModifiers();
String name = c.getName();
System.out.printf("\t" + Modifier.toString(modifiers) + " " + name + "(");
Class[] parameterTypes = c.getParameterTypes();
if(parameterTypes.length > 0){
StringBuffer sb = new StringBuffer(parameterTypes[0].getName());
for(int i=1 ; i<parameterTypes.length ; i++){
sb.append(", " + parameterTypes[i].getName());
}
System.out.printf(sb.toString());
}
System.out.println(");");
}
}
private static void printFields(Field[] fields) {
for(Field f : fields){
int modifiers = f.getModifiers();
String name = f.getName();
System.out.println("\t" + Modifier.toString(modifiers) + " " + name + ";");
}
}
public int add(int a, int b){
return a+b;
}
}
console输出
public bean.User{
private username;
private password;
public bean.User();
public bean.User(java.lang.String, java.lang.String);
public toString();
public compareTo(bean.User);
public volatile compareTo(java.lang.Object);
public getUsername();
public setUsername(java.lang.String);
public getPassword();
public setPassword(java.lang.String);
}