import java.util.ArrayList; import java.util.List; //Field反射 public class ListFiledReflect extends Fatherr{ private String name; private String age; public ListFiledReflect(){} public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public static void main(String[] args) { MediumClas mediumClas = new MediumClas(); System.out.println(mediumClas.getListFiledReflects().get(0).getName()); System.out.println(mediumClas.getListFiledReflects().get(0).getAge()); MediumClas mediumClas1 = new MediumClas(); for (ListFiledReflect listFiledReflect: mediumClas1.getListFiledReflects()) { listFiledReflect.initialize(); } System.out.println(mediumClas1.getListFiledReflects().get(0).getName()); System.out.println(mediumClas1.getListFiledReflects().get(0).getAge()); } } class MediumClas{ public List<ListFiledReflect> getListFiledReflects() { return listFiledReflects; } public void setListFiledReflects(List<ListFiledReflect> listFiledReflects) { this.listFiledReflects = listFiledReflects; } private List<ListFiledReflect> listFiledReflects; public MediumClas(){ //初始化两个对象 this.listFiledReflects = new ArrayList<ListFiledReflect>(); this.listFiledReflects.add(new ListFiledReflect()); this.listFiledReflects.add(new ListFiledReflect()); }
}
import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; //对应的基类 public class Fatherr{ List<MessageNode> nodes; public Fatherr(){ //初始化设值 this.nodes = new ArrayList<MessageNode>(); this.nodes.add(new MessageNode("name","20")); this.nodes.add(new MessageNode("age","19")); } //采用属性反射为子类属性设值 public void initialize(){ for (MessageNode node: nodes) { try { System.out.println(this.getClass()); //获取子类属性名,node.getName()对应的子类属性名称 Field field = this.getClass().getDeclaredField(node.getName()); //如果Accessible为false,不在其属性的作用域下就不能访问。 field.setAccessible(true); //对应的值注入当前子类对应的属性中 field.set(this,node.getValue()); } catch (Exception e) { e.printStackTrace(); } } }
public class MessageNode { private String name; private String value; public MessageNode(String name,String age){ this.name = name; this.value = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } }