一、学生类
public class Student {
private String id;
private String name;
private boolean gender;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isGender() {
return gender;
}
public void setGender(boolean gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student() {
}
public Student(String id,
String name, boolean gender, int age) {
this.id = id;
this.name = name;
this.gender = gender;
this.age = age;
}
public void writeString() {
String str = new StringBuffer("学号:").append(id).append(";姓名:")
.append(name).append(";年龄:").append(age).append("性别:")
.append(gender).toString();
System.out.println(str);
}
}
二、对学生类的反射操作
public class ClazzLearning {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
Class clazz1 = Student.class;
Class clazz2 = new Student().getClass();
Class clazz3 = Class.forName("com.huawei.Student");
Field[] fields = clazz1.getDeclaredFields();
for(int i=0; i<fields.length; i++) {
System.out.println("成员变量类型:" + fields[i].getType()
+ "成员变量名:" + fields[i].getName());
}
Method[] methods = clazz2.getDeclaredMethods();
for(int j=0; j<methods.length; j++) {
System.out.println("成员方法返回类型" + methods[j].getReturnType()
+ "成员方法名:" + methods[j].getName()
+ "成员方法参数类型:" + Arrays.toString(methods[j].getParameterTypes())
+ "成员方法参数名:" + Arrays.toString(methods[j].getParameters()));
}
Class parameter = null;
Method toStringMethod = clazz3.getMethod("writeString");
Student student = new Student("2020", "张三", true, 18);
toStringMethod.invoke(student);
}
}