梦泡泡的专栏

泡泡是最棒的!

getDeclaredMethod、invoke的使用

工作中遇到了暂且做个记录,有时间深入了解下。。。。


getDeclaredMethod:返回方法对象;

invoke:简单理解就是在不知道对象的前提下,通过配置的参数来调用方法


      网上还有一个解释:就是调用类中的方法,最简单的用法是可以把方法参数化
invoke(class, method)
比如你Test类里有一系列名字相似的方法setValue1、setValue2等等
可以把方法名存进数组v[],然后循环里invoke(test,v[i]),就顺序调用了全部setValue


如下代码:

package aaaaa.aaaaa;

public class FromObject {
private String name;

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}

}


package aaaaa.aaaaa;

public class ToObject {
private String name;

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}

}


package aaaaa.aaaaa;

import java.lang.reflect.InvocationTargetException;

/**
 * mengpaopao
 * 对象的转化
 */
public class TestMain 
{
    public static void main( String[] args )
    {
		FromObject fo = new FromObject();
		fo.setName("heheheheh");
		ToObject to = new ToObject();
		Class<? extends Object> foClass = fo.getClass();
		try {
			to.setName((String) foClass.getDeclaredMethod("getName").invoke(fo));
		} catch (IllegalAccessException e) {
 			e.printStackTrace();
		} catch (IllegalArgumentException e) {
 			e.printStackTrace();
		} catch (InvocationTargetException e) {
 			e.printStackTrace();
		} catch (NoSuchMethodException e) {
 			e.printStackTrace();
		} catch (SecurityException e) {
 			e.printStackTrace();
		}
try {
	System.out.println("*********************"+ foClass.getDeclaredMethod("getName"));
} catch (NoSuchMethodException e) {
 	e.printStackTrace();
} catch (SecurityException e) {
 	e.printStackTrace();
}
try {
	System.out.println("*********************"+(String) foClass.getDeclaredMethod("getName").invoke(fo));
} catch (IllegalAccessException e) {
 	e.printStackTrace();
} catch (IllegalArgumentException e) {
  } catch (InvocationTargetException e) {
 	e.printStackTrace();
} catch (NoSuchMethodException e) {
 	e.printStackTrace();
} catch (SecurityException e) {
 	e.printStackTrace();
}
    }
}

打印如下:
*********************public java.lang.String aaaaa.aaaaa.FromObject.getName()
*********************heheheheh





阅读更多
个人分类: java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

getDeclaredMethod、invoke的使用

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭