主代码
package com. lit. reflect;
import java. lang. reflect. Field;
import java. lang. reflect. Method;
import java. lang. reflect. Modifier;
import java. util. Date;
public class test01 {
public static void main ( String[ ] args) throws Exception {
Class person = Class. forName ( "com.lit.reflect.Person" ) ;
System. out. println ( "完整类名" + person. getName ( ) ) ;
System. out. println ( "简单类名" + person. getSimpleName ( ) ) ;
Field[ ] df = person. getDeclaredFields ( ) ;
for ( Field field : df) {
System. out. println ( "Person的参数修饰符--->" + Modifier. toString ( field. getModifiers ( ) ) ) ;
System. out. println ( "Person的参数类型--->" + field. getType ( ) . getSimpleName ( ) ) ;
System. out. println ( "Person的参数名--->" + field. getName ( ) ) ;
System. out. println ( "====================================" ) ;
}
Method[ ] methods = person. getDeclaredMethods ( ) ;
for ( int i = 0 ; i < methods. length; i++ ) {
System. out. println ( "Person中的第" + i + "个方法名:" + methods[ i] . getName ( ) ) ;
System. out. println ( "Person中的第" + i + "个方法类型:" + methods[ i] . getReturnType ( ) ) ;
System. out. println ( "Person中的第" + i + "个方法修饰符:" + Modifier. toString ( methods[ i] . getModifiers ( ) ) ) ;
Class< ? > [ ] parameterTypes = methods[ i] . getParameterTypes ( ) ;
for ( int j = 0 ; j < parameterTypes. length; j++ ) {
System. out. println ( "Person中的第" + i + "个方法的第" + j + "个参数" + parameterTypes[ j] . getSimpleName ( ) ) ;
}
System. out. println ( "<----------------------------------->" ) ;
}
Object o = person. newInstance ( ) ;
Field a = person. getDeclaredField ( "a" ) ;
a. setAccessible ( true ) ;
a. set ( o, 25 ) ;
System. out. println ( "a--->" + a. get ( o) ) ;
System. out. println ( "<----------------------------------->" ) ;
Method run = person. getDeclaredMethod ( "Run" , int . class , String. class , int . class , Date. class ) ;
run. invoke ( o, 10 , "王五" , 25 , new Date ( ) ) ;
}
}
配合测试代码Person类
package com. lit. reflect;
import java. util. Date;
public class Person {
private int a;
private String b;
private int c;
private Date d;
public void Run ( int id, String name, int age, Date birthday) {
System. out. println ( "id--->" + id + "--->" + name + "--->" + age + "--->" + birthday) ;
}
private void a ( ) {
System. out. println ( "调用a方法" ) ;
}
}