利用反射机制反射Student类中所有的Field
下面就是例子:
Student类代码:
//反射属性Field
public class Srudentt {
//Field翻译为字段,其实就是属性/成员
//5个Field,分别采用了不同的访问控制权限修饰符。
public int no;//这一行统称为一个Field对象。
private String name;
protected int age;
boolean sex;
public static final double MATH_PI = 3.1415926;
}
调用测试类:
/*
反射Student类当中所有的Field。
*/
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
public class Reflect {
public static void main(String[] args) throws Exception{
//获取整个类Class
Class studentClass = Class.forName("cn.itcast.day04.demo01.Kt1.test2.Srudentt");
String className = studentClass.getName();
System.out.println("完整类名"+className);
String simpName = studentClass.getSimpleName();
System.out.println("简类名"+simpName);
//获取类中所有的public修饰的Field
Field[] fields = studentClass.getFields();
System.out.println(fields.length);//测试只2个数据:2
//field中有一个元素,取出。
Field f = fields[0];
//取出这个Field对象的名字。
String fieldName =f.getName();
System.out.println(fieldName);//输出no,因为他是Public的。
//这个才是获取所有的Field对象
Field[] fs = studentClass.getDeclaredFields();
System.out.println(fs.length);//5
System.out.println("**************************");
///遍历
//拿到field
for (Field field : fs){
//获取属性的修饰符列表
int i = field.getModifiers();//返回的修饰符是一个数字,每个数字是修饰符的代号!!
System.out.println(i);
//将这个代号数字转换成字符串
String xiushifu = Modifier.toString(i);
System.out.println(xiushifu);
//获取属性的类型
Class fieldType = field.getType();
//String fName = fieldType.getName();
String fName = fieldType.getSimpleName();
System.out.println(fName);
//获取属性的名字
System.out.println(field.getName());
}
}
}