getDeclaredMethod、invoke的使用

原创 2016年06月01日 18:26:29

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


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反射中getMethod getDeclaredMethod

原文地址:http://www.cnblogs.com/jianjianjiao/articles/1853409.html 试用Java中的反射reflect之getDeclare...

java.lang.Class.getDeclaredMethod()方法详解

java.lang.Class.getDeclaredMethod()方法用法 注:方法返回一个Method对象,它反映此Class对象所表示的类或接口的指定已声明方法。 描述 ja...
  • gao_chun
  • gao_chun
  • 2015年01月19日 17:14
  • 12020

JSONObject增加过滤注解

jsonObject

关于getDeclaredMethod一些用法

public class Test { public void test(int x){ System.out.println(x); } public static void mai...

反射机制 Class.getDeclaredMethod

转自:http://blog.sina.com.cn/s/blog_ab38604a0101hwbd.html public static Response call(Object obj,Requ...

getDeclaredMethod()和getMethod()的区别

getDeclaredMethod*()获取的是类自身声明的所有方法,包含public、protected和private方法。 getMethod*()获取的是类的所有共有方法,这就包括自身的所有...
  • ozwarld
  • ozwarld
  • 2012年12月10日 12:26
  • 25376

java.lang.Class.getDeclaredMethod()方法

java.lang.Class.getDeclaredMethod()方法用法实例教程 - 方法返回一个Method对象,它反映此Class对象所表示的类或接口的指定已声明方法。...
  • s445320
  • s445320
  • 2016年09月27日 21:28
  • 1027

JAVA深入研究——Method的Invoke方法。

http://www.cnblogs.com/onlywujun/p/3519037.html 在写代码的时候,发现从父类class通过getDeclaredMethod获取的Method可以调用...
  • bluetjs
  • bluetjs
  • 2016年08月19日 18:21
  • 419

java中通过反射获取方法并且调用(getMethod和invoke深入)实践

为了支持业务的快速变更,往往采用可配置的方式,将业务逻辑的处理部分配置在数据库中或者XMl文件里。配置什么,如何配置才更灵活,That's a problem. 以数据库配置为例(xml相同),在数据...
  • wawmg
  • wawmg
  • 2013年12月17日 00:43
  • 28442

利用Java反射机制调用含数组参数的方法

http://yourmitra.wordpress.com/2008/09/26/using-java-reflection-to-invoke-a-method-with-array-parame...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:getDeclaredMethod、invoke的使用
举报原因:
原因补充:

(最多只允许输入30个字)