package com.qr;
public class Person {
private int id;
private String nameString;
public boolean isSend;
public int idCard;
protected double salary;
int aa;
public void save() {
System.out.println("保存不保存");
}
protected void dele() {
System.out.println("删除");
}
public Person() {
}
public Person(int id, String nameString, boolean isSend) {
this.id = id;
this.nameString = nameString;
this.isSend = isSend;
}
public Person(int id, String nameString, boolean isSend, int idCard) {
this.id = id;
this.nameString = nameString;
this.isSend = isSend;
this.idCard = idCard;
}
public Person(int id, String nameString, boolean isSend, double salary, int aa) {
this.id = id;
this.nameString = nameString;
this.isSend = isSend;
this.salary = salary;
this.aa = aa;
}
//私有构造
private Person(int id, String nameString, boolean isSend, int idCard, double salary, int aa) {
this.id = id;
this.nameString = nameString;
this.isSend = isSend;
this.idCard = idCard;
this.salary = salary;
this.aa = aa;
}
private void he(){
}
protected void hehe(){
}
void hehehe(){
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNameString() {
return nameString;
}
public void setNameString(String nameString) {
this.nameString = nameString;
}
public boolean isSend() {
return isSend;
}
public void setSend(boolean send) {
isSend = send;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public int getAa() {
return aa;
}
public void setAa(int aa) {
this.aa = aa;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +",idCard=" + idCard +
", nameString='" + nameString + '\'' +
", isSend=" + isSend +
", salary=" + salary +
", aa=" + aa +
'}';
}
}
获取属性
Person person = new Person();
Class<? extends Person> cls = person.getClass();
//获取所有 public 修饰的成员变量
// public boolean 修饰符 com.qr.Person.isSend所在的包和变量名称
Field[] fields = cls.getFields();
// System.out.println(fields);
for (int i = 0; i < fields.length; i++) {
System.out.println(fields[i]);
}
//获取指定名称的成员变量
Field idCard = cls.getField("idCard");
System.out.println(idCard);
//获取所有的成员变量
Field[] declaredFields = cls.getDeclaredFields();
System.out.println("获取所有的成员变量");
for (Object o :declaredFields) {
System.out.println(o);
}
System.out.println("获取指定的成员变量");
//如果nameString不存在,那么NoSuchFieldException
Field nameString = cls.getDeclaredField("nameString");
System.out.println(nameString);
/**
* 现上面的异常说明我们无法给私有属性赋值
* IllegalAccessException: Class com.qr.Reflex can not access a member of class com.qr.Person with modifiers "private"
* 需要使用暴力反射:
* setAccessible(true)
*/
nameString.setAccessible(true);
nameString.set(person,"张三");
Object o = idCard.get(person);
//这个默认值是0
System.out.println(o);
idCard.set(person,20);
System.out.println(person);