呵呵,没想到今天的自己,学习越来越有趣了,今天开始学习关系映射(java.lang.reflect)
呵呵,首先要注意的是:5 个对象
Class 类
Field 属性
Method 方法
Construtor 构造函数
Array 动态数组(一般用于传参)
其实关系映射主要的目的
1 知道信息
2 动态操作
这里都是本人用心良苦写的,有什么表达不正确的,可以联系962589149
下面给出代码:
/**
*
* @author ym
* @see 关系测试类
*/
public class RefTest {
private String username="yanming";
public RefTest(){}
public void display(String usersr)
{
System.out.println("hello"+username);
}
/**
*
* @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 static void main(String args[]) throws Exception
{
RefTest ref=new RefTest();
//全路径com.haode.tech.util.RefTest
Class cla=Class.forName("com.haode.tech.util.RefTest");
/**
* Method[] methods=cla.getDeclaredMethods();
//输出改类的方法
for(int i=0;i<methods.length;i++)
{
System.out.println(methods[i].getName());
}
*/
String[] yanming=new String[]{"aaa"};
ref.invokeMethod(ref,"display", yanming);
}
}
呵呵,首先要注意的是:5 个对象
Class 类
Field 属性
Method 方法
Construtor 构造函数
Array 动态数组(一般用于传参)
其实关系映射主要的目的
1 知道信息
2 动态操作
这里都是本人用心良苦写的,有什么表达不正确的,可以联系962589149
下面给出代码:
/**
*
* @author ym
* @see 关系测试类
*/
public class RefTest {
private String username="yanming";
public RefTest(){}
public void display(String usersr)
{
System.out.println("hello"+username);
}
/**
*
* @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 static void main(String args[]) throws Exception
{
RefTest ref=new RefTest();
//全路径com.haode.tech.util.RefTest
Class cla=Class.forName("com.haode.tech.util.RefTest");
/**
* Method[] methods=cla.getDeclaredMethods();
//输出改类的方法
for(int i=0;i<methods.length;i++)
{
System.out.println(methods[i].getName());
}
*/
String[] yanming=new String[]{"aaa"};
ref.invokeMethod(ref,"display", yanming);
}
}