📅  最后修改于: 2023-12-03 15:32:01.875000             🧑  作者: Mango
getField()
方法及示例在Java中,我们可以使用Class
类提供的getField()
方法获取类中定义的公共成员变量(即属性)。getField()
方法返回一个Field
对象,该对象包含有关属性的信息,如属性类型、修饰符等。
getField()
方法的语法getField()
方法的语法如下所示:
public Field getField(String name) throws NoSuchFieldException, SecurityException
其中,name
参数是要获取的属性的名称。
假设有以下Java类:
public class Student {
public String name;
private int age;
protected String gender;
public Student(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public void study() {
System.out.println(name + "正在学习...");
}
private void sleep() {
System.out.println(name + "正在睡觉...");
}
protected void eat() {
System.out.println(name + "正在吃饭...");
}
}
我们可以使用以下代码来获取Student
类中的公共属性:
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) throws NoSuchFieldException, SecurityException {
Field[] fields = Student.class.getFields();
for (Field field : fields) {
System.out.println(field.getName());
}
}
}
输出结果为:
name
gender
可以看到,输出结果中只包含了name
和gender
两个属性,因为它们是公共属性(即使用public
关键字修饰的属性)。
如果我们想获取Student
类中的所有属性,包括私有和受保护的属性,可以使用以下代码:
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) throws NoSuchFieldException, SecurityException {
Field[] fields = Student.class.getDeclaredFields();
for (Field field : fields) {
System.out.println(field.getName());
}
}
}
输出结果为:
name
age
gender
可以看到,输出结果中包含了所有的属性,包括公共、私有和受保护的属性。
如果我们想获取某个具体的属性,如Student
类中的age
属性,可以使用以下代码:
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) throws NoSuchFieldException, SecurityException {
Field ageField = Student.class.getDeclaredField("age");
System.out.println(ageField.getName());
}
}
输出结果为:
age
可以看到,输出结果中只包含了age
属性。
getField()
方法只能获取公共属性,如果要获取其他类型的属性,如私有属性或受保护的属性,需要使用getDeclaredFields()
方法。如果要获取某个具体的属性,也需要使用getDeclaredField()
方法。Field
类提供的get()
方法或set()
方法。示例代码留给读者自行实现。