package com;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
*
* java 反射机制
*
* @author Mr He
*
*/
public class JavaInfoclass {
/**
* 得到某个对象的属性
*
* @param owner
* @param fieldName
* @return
* @throws Exception
*/
public Object getProperty(Object owner, String fieldName) throws Exception {
Class ownerClass = owner.getClass();
Field field = ownerClass.getField(fieldName);
Object property = field.get(owner);
return property;
}
/**
* 得到某个类的静态属性
* @param className
* @param fieldName
* @return
* @throws Exception
*/
public Object getStaticProperty(String className, String fieldName)
throws Exception {
Class ownerClass = Class.forName(className);
Field field = ownerClass.getField(fieldName);
Object property = field.get(ownerClass);
return property;
}
/**
* 执行某对象的方法
* @param owner
* @param methodName
* @param args
* @return
* @throws Exception
*/
public Object invokeMethod(Object owner, String methodName, Object[] args)
throws Exception {
Class ownerClass = owner.getClass();
Class[] argsClass = new Class[args.length];
for (int i = 0, j = args.length; i < j; i++) {
argsClass[i] = args[i].getClass();
}
Method method = ownerClass.getMethod(methodName, argsClass);
return method.invoke(owner, args);
}
public String getName(){
System.out.println("get name method");
return "return value";
}
}
package com;
import java.lang.reflect.Method;
/**
* 测试反射机制
* @author Mr He
*
*/
public class TestInfo {
public static void main(String[] args) {
try {
Class cl1=Class.forName("com.JavaInfoclass");
Method method=cl1.getMethod("getName",null );
System.out.println(method.invoke(cl1.newInstance(), null).toString());
cl1.newInstance();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}