反射
三种获得字节码文件
// 直接调用
Student.class
// 创建对象调用
Student s = new Student;
s.getClass
// 使用Class中的静态方法调用
Class.forName("url(里面写路径)")
获得构造函数对象
拿成员变量和下面一样,把Constructor改为Field
field中给成员变量赋值方法是set(obj,“西安”)
// 获得公共构造函数对象
c.getConstructors();
// 获得所有构造函数对象
c.getDeclaredConstructors();
// 获得一个公共构造函数对象
c.getConstructor();
// 获得单个构造方法对象
c.getDeclaredConstructor();
创建对象
// 暴力反射(取消访问检查)
con.setAccessible(true);
// 创建对象(即使是private修饰也可创建)
con.newInstance();
获取成员方法
// getMethod包括继承的,加declared的不包括继承
Method m = c.getMethod("方法名");
m.invoke(obj, "要传入的参数");
// 还有getDeclaredMethod(s)和上面方法相类似的用法