JAVA的反射
是指,可以通过一个类名来
探察这个类里面的信息
,比如说类的属性名,属性名的修饰符,方法名,方法返回值,方法修饰符等等,
反射还可以生成类的实例,通过这个实例定义属性,调用方法,特别是能调用私有的属性和私有的方法。
package com.reflect;
import java.lang.reflect.Method;
public class ReflectionTest {
/**
* reflect机制 1.列出HashSet中所有方法 2.调用add,remove方法
*/
public static void main(String[] args) {
try {
Class c = Class.forName("java.util.HashSet");
Object o = c.newInstance();
Method[] methods = c.getMethods();
// 列出HashSet中所有方法
for (Method m : methods) {
System.out.println(m);
}
// 调用实例中的add方法,添加哈哈,hello,java对象
Method m1 = c.getMethod("add", Object.class);
m1.invoke(o, "哈哈");
m1.invoke(o, "hello");
m1.invoke(o, "java");
System.out.println(o);
// 调用remove方法,删除hello对象
Method m2 = c.getMethod("remove", Object.class);
m2.invoke(o, "hello");
System.out.println(o);
} catch (Exception e) {
}
}
}