简单反射实现
实体
public class TestObject {
private String value;
public TestObject ( ) {
value = "Java" ;
}
public void tesr1 ( String s) {
System . out. println ( "I love " + s) ;
}
private void test2 ( ) {
System . out. println ( "value is " + value) ;
}
}
反射逻辑
public static void main ( String [ ] args) {
Class < ? > aClass = Class . forName ( "xxxx.TestObject " ) ;
Object o = aClass. newInstance ( ) ;
Method [ ] declaredMethods = aClass. getDeclaredMethods ( ) ;
for ( Method method : declaredMethods) {
System . out. println ( method. getName ( ) ) ;
}
Method method = aClass. getDeclaredMethod ( "tesr1" , String . class ) ;
method. invoke ( o, "Java" ) ;
Field value = aClass. getDeclaredField ( "value" ) ;
value. setAccessible ( true ) ;
value. set ( o, "JavaTest" ) ;
Method publicMethod = aClass. getDeclaredMethod ( "tesr2" ) ;
publicMethod. setAccessible ( true ) ;
publicMethod. invoke ( o) ;
}
执行结果
test1
test2
I love Java
value is JavaTest