public static void main(String[] args) {
try {
Class cl= Class.forName("com.qcby.Person");
Person p= (Person) cl.newInstance();
Field [] f =cl.getDeclaredFields();
for( Field ff:f) {
ff.setAccessible(true);
}
for( Field ff:f ) {
System.out.println(ff);
System.out.println(ff.get(p));
}
Method [] methods = cl.getDeclaredMethods();
for( Method m: methods) {
System.out.println(m);
}
String name = (String) p.getClass().getMethod("getName").invoke(p);
System.out.println(name);
} catch (Exception e) {
e.printStackTrace();
}
}
Static Class forName(String className):返回描述类名为className的class对象
Object newInstance():返回这个类的一个新实例
Object newInstance(Object[] args):构造一个这个构造器所属的类的新实例。参数args 这是提供给构造器的参数。
Void printStackTrace():将Throwable对象和栈的轨迹输出到标准错误流
Field[] getField():
Field [] getDeclaredFields():
getFields方法将返回一个包含Fields对象的数组,这些记录了这个类或其超类的公有域。getDeclaredFields方法返回包含Fields对象的数组,这些对象记录了这个类的全部域,如果类中没有域,或者class对象描述的是基本类型或数组类型,这些方法将返回一个数组长度为0的数组。
Methor [] getMethod对象的数组,getMethods将返回所有的公有方法,包括从超类中继承了的公有方法,getDeclareMethors返回这个类或者接口的全部方法,但不包括有超类继承了的方法。
Constructor[] getConstructors() 返回包含了Constructor对象的数组,其中包含了Class对象所描述的类的所有公共构造器,或者所有构造器。
Void setAccessible(boolean flag):
为反射对象设置可访问标志,flag为true表明屏蔽Java语言的访问检查,使得对象的私有属性也可以被查询和设置。
后待补充!