Field 类代表某个类中的一个成员变量。
比如定义一个Reflect 类
public class Reflect {
private int x;
public int y;
public Reflect(int x, int y) {
this.x = x;
this.y = y;
}
通过ReflectPoint pt1 = new Reflect(2,4);
Field fieldY = pt1.getClass().getField("y"); y的值为4。
Field fieldx = pt1.getClass().getDeclaredField("x");
fieldx.setAccessible(true);
System.out.println(fieldy.get(pt1));
System.out.println(fieldx.get(pt1));
但是需要记住fieldY不是对象身上的变量,而是类上,要用它去取某个对象上对应的值。
Field fieldX = pt1.getClass().getField("x");是错误的,取不到X的值,因为x是private的,getField方法无法访问私有变量的,需要使用getDeclaredField方法。
最重要的一点,输出得到的值时候,System.out.println(fieldY.get(pt1));这可以直接打印输出Y的值为4,但是System.out.println(fieldX.get(pt1));却不能直接输出X,需要加上一行代码fieldX.setAccessible(true);之后才能显示,这称之为 暴力反射
Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。