Field : Field翻译为字段,其实就是属性/成员
简单运用:直接看代码
1)先建立一个Student类
public class Student {
//4个Field,分别采用了不同的访问控制权限修饰符
public int no;
private String name;
protected int age;
boolean sex;
}
2)main函数
要用到的Field类中的方法:
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
public class ReflectField {
public static void main(String[] args) throws ClassNotFoundException {
//获取整个类
Class studentClass=Class.forName("com.java.note.Student");
String className = studentClass.getName();
System.out.println("完整类名:"+ className);//com/java/note/Student.java
String simpleName = studentClass.getSimpleName();
System.out.println("简类名:"+simpleName);
System.out.println("---------------------");
//获取类中的所有pubic修饰的Field
Field[] fields= studentClass.getFields();
System.out.println("getFields数量:"+fields.length);
//不在同包下又没有继承关系,只能获取public修饰的属性
Field f=fields[0];
// 取出这个Field它的名宇
String fieldName = f.getName();
System.out.println("getFields数组的第一个值:"+fieldName);
//获取所有的Field
Field[] fs = studentClass.getDeclaredFields();
System.out.println("getDeclaredFields数量:"+fs.length);
System.out.println("========getDeclaredFields值===========");
//遍历
int i=1;
for(Field field : fs){
//获取属性的修饰符列表
int j=field.getModifiers();//返回值是int类型,是一个数字,每个数字是修饰符的代号
System.out.println("第"+i+"个Field值的修饰符代号:"+j);
//可以将这个“代号”数完转换成“字符串”吗 ?
//用上面的toString(int mod)方法
String modifierString = Modifier.toString(j);
System.out.println("第"+i+"个Field值的修饰符代号转换成字符串后:"+modifierString);
//获取属性的类型
Class fieldType = field.getType();
String fName1 = fieldType.getName();
System.out.println("第"+i+"个Field值的数据类型:"+fName1);
String fName = fieldType.getSimpleName();
System.out.println("第"+i+"个Field值的简数据类型:"+fName);
//获取属性的名字
System.out.println("第"+i+"个Field值名字:"+field.getName());
System.out.println("-----------------");
i++;
}
}
}
运行结果:
完整类名:com.java.note.Student
简类名:Student
---------------------
getFields数量:1
getFields数组的第一个值:no
getDeclaredFields数量:4
========getDeclaredFields值===========
第1个Field值的修饰符代号:1
第1个Field值的修饰符代号转换成字符串后:public
第1个Field值的数据类型:int
第1个Field值的简数据类型:int
第1个Field值名字:no
-----------------
第2个Field值的修饰符代号:2
第2个Field值的修饰符代号转换成字符串后:private
第2个Field值的数据类型:java.lang.String
第2个Field值的简数据类型:String
第2个Field值名字:name
-----------------
第3个Field值的修饰符代号:4
第3个Field值的修饰符代号转换成字符串后:protected
第3个Field值的数据类型:int
第3个Field值的简数据类型:int
第3个Field值名字:age
-----------------
第4个Field值的修饰符代号:0
第4个Field值的修饰符代号转换成字符串后:
第4个Field值的数据类型:boolean
第4个Field值的简数据类型:boolean
第4个Field值名字:sex
-----------------