`

通过class方法名和参数反射方法

    博客分类:
  • java
阅读更多
import java.lang.reflect.Method;

public class Executor<T> {
	/**
	 * 
	 * @param clazz 执行类的class
	 * @param str  方法名
	 * @param obj  参数
	 * @return
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public T getObject(Class clazz,String str,Object[] obj) throws Exception{
		Class[] cla=new Class[obj.length];
		if(obj.length==0){
			cla=null;
		}else{
			for(int i=0;i<obj.length;i++){
				cla[i]=obj[i].getClass();
			}
		}
		Method m=clazz.getMethod(str,cla);
		return (T)m.invoke(clazz.newInstance(), obj);
	}
	
	public static void main(String[] args) {
		try {
			new Executor<>().getObject(A.class, "printString",new Object[]{"string",1});
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

class A{
	public void printString(String str,Integer i){
		System.out.println(str+i);
	}
	
}


结果:
string1
分享到:
评论

相关推荐

    Java 反射(Reflection) 经典实用例子

    Method method = ownerClass.getMethod(methodName, argsClass):通过Method名和参数的Class数组得到要执行的Method。 method.invoke(owner, args):执行该Method,invoke方法的参数是执行这个方法的对象,和参数...

    Java中反射的常用方法总结

    1.Class类的静态成员方法,通过完整的包名.类名获取对应.class文件的Class对象 Class Class.forName(String packageNameAndClassName); 2.通过类名.class方法,获取对应的Class类对象,通常用于方法的参数类型 ...

    day021-反射和注解笔记和代码.rar

    参数字节码)根据方法名和参数类型获取指定的的方法 methodName:方法名 Class:形参类型。如果方法没有形参,则Class可变参数不用写 Method method = clazz.getDeclaredMethod(String ...

    c# 反射实例

    // 类型名,方法名,参数 string className = "ConsoleApplication1.A"; string methodName = "Fun"; string param = "param"; // 获取程序集 Assembly assembly = Assembly.GetExecutingAssembly(); // ...

    xml与反射.txt

    射获取类的所有信息,接着便能调用它的任何一个方法和属性。 反射的步骤有哪些? 第一:获取类加载器:ClassLoader loader=Thread.currentThread().getContextClassLoader();//获取当 前线程的上下文类加载器 第二:...

    一些有关反射的方法

    Class类的静态成员方法,通过完整的包名.类名获取对应.class文件的Class对象 同时也可以作为.class文件加载的方法。 Class 类名.class; 通过类名.class方法,获取对应的Class类对象,通常用于方法的参数类型。 ...

    PHP的反射动态获取类方法、属性、参数操作示例

    我们可以在PHP运行时,通过PHP的反射动态的获取类的方法、属性、参数等详细信息。 用途:插件的设计,文档的自动生成,扩充PHP语言。 &lt;?php class Person { const weightUnit = 'kg'; const heightUnit = 'cm...

    Java——反射方法总结

    * Class 类的静态成员方法通过完整的包名.类名获取对应的.class文件的class对象 * 同时也可以作为.class文件加载的方式 * * Class 类名.class; * 通过类名.class方法,获取对应的.class对象,通常用于方法的...

    01:详解C#中的反射.pdf

    反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举等)的成员和成员的信息。有了反射,即可对每一个类型了如指掌。另外我还可以直接创建对象,即使这个...

    java反射配置文件实现

    用反射原理 从配置文件中读取数据 public static void main(String[] args) throws Exception{ Properties pro=new Properties(); pro.load(new FileInputStream("fanshe.txt")); //Class c=null; String ...

    ReflectionDemo.rar

    C#的反射System.Reflection正对应于C#的整体代码结构: 命名空间Namespace一般与程序集Assembly名称一致。 一个程序集Assembly由多...方法的参数Parameter有类型,参数名,默认值,是否引用参数ref,是否输出参数out

    java反射机制

    // 加载并初始化命令行参数指定的类 Class&lt;?&gt; classType = Class.forName(args[0]); // 获得类的所有方法 Method methods[] = classType.getDeclaredMethods(); for (int i = 0; i ; i++) { System.out....

    java动态代理和反射

    //第二个参数method,被代理对象的接口方法 @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("做前置工作"); System.out.println("-------...

    Java中的反射

    反射 1 反射概述 1.1 Java文件和.class文件的关系 Java文件  Java文件中包含代码的所有内容,类... Method 成员方法,方法权限修饰符,返回值类型,方法名,形式参数列表数据类型 总结:  .class字节码文件中,包含

    Java基础学习教程(附PPT和源代码)

    配置eclispe的编译与运行环境rar在eclispe中配置java模板代码.rar在eclipse中导入已有的工程.rarjava5的静态导入与...对接收数组参数的成员方法进行反射....数组与Object的关系及其反射类型.rar数组的反射应用.rar

    PHP反射类ReflectionClass和ReflectionObject的使用方法

    PHP中的扩展反射类,该扩展用来分析php程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。看一个这样的问题,php类的成员变量没有在类中声明,而是在函数中声明,有什么不同?复制代码 代码如下:...

    PHP反射使用实例和PHP反射API的中文说明

    最近在开发过程中需要获取...当然前提是约定好了参数名称和get方法传值变量名一致。 采用PHP的反射API,获得函数参数名称和参数默认值的方法如下: 复制代码 代码如下: &lt;?php  class testClass{     public fu

    利用JAVA注解与反射 - 实现SQL语句自动生成

    编写对应Entity添加相关注解,并通过SqlUtil工具,传入相关参数生成SQL语句 例如:要生成对应数据库Person的SQL增删改查 SqlUtil.create(Person.class) SqlUtil.insert(Person.class) SqlUtil.insert(Person....

    C#实现实体类与字符串互相转换的方法

    本文实例讲述了C#实现实体类与字符串互相转换的方法。分享给大家供大家参考。具体实现方法如下: using System; using System.Collections.Generic;... /// 将实体类通过反射组装成字符串 /// ///

    C#中方法的直接调用、反射调用与Lambda表达式调用对比

    不过通过反射调用的性能会远远低于直接调用——至少从绝对时间上来看的确是这样。虽然这是个众所周知的现象,我们还是来写个程序来验证一下。比如我们现在新建一个Console应用程序,编写一个最简单的Call方法。 ...

Global site tag (gtag.js) - Google Analytics