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
分享到:
相关推荐
Method method = ownerClass.getMethod(methodName, argsClass):通过Method名和参数的Class数组得到要执行的Method。 method.invoke(owner, args):执行该Method,invoke方法的参数是执行这个方法的对象,和参数...
1.Class类的静态成员方法,通过完整的包名.类名获取对应.class文件的Class对象 Class Class.forName(String packageNameAndClassName); 2.通过类名.class方法,获取对应的Class类对象,通常用于方法的参数类型 ...
参数字节码)根据方法名和参数类型获取指定的的方法 methodName:方法名 Class:形参类型。如果方法没有形参,则Class可变参数不用写 Method method = clazz.getDeclaredMethod(String ...
// 类型名,方法名,参数 string className = "ConsoleApplication1.A"; string methodName = "Fun"; string param = "param"; // 获取程序集 Assembly assembly = Assembly.GetExecutingAssembly(); // ...
射获取类的所有信息,接着便能调用它的任何一个方法和属性。 反射的步骤有哪些? 第一:获取类加载器:ClassLoader loader=Thread.currentThread().getContextClassLoader();//获取当 前线程的上下文类加载器 第二:...
Class类的静态成员方法,通过完整的包名.类名获取对应.class文件的Class对象 同时也可以作为.class文件加载的方法。 Class 类名.class; 通过类名.class方法,获取对应的Class类对象,通常用于方法的参数类型。 ...
我们可以在PHP运行时,通过PHP的反射动态的获取类的方法、属性、参数等详细信息。 用途:插件的设计,文档的自动生成,扩充PHP语言。 <?php class Person { const weightUnit = 'kg'; const heightUnit = 'cm...
* Class 类的静态成员方法通过完整的包名.类名获取对应的.class文件的class对象 * 同时也可以作为.class文件加载的方式 * * Class 类名.class; * 通过类名.class方法,获取对应的.class对象,通常用于方法的...
反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类、结构、委托、接口和枚举等)的成员和成员的信息。有了反射,即可对每一个类型了如指掌。另外我还可以直接创建对象,即使这个...
用反射原理 从配置文件中读取数据 public static void main(String[] args) throws Exception{ Properties pro=new Properties(); pro.load(new FileInputStream("fanshe.txt")); //Class c=null; String ...
C#的反射System.Reflection正对应于C#的整体代码结构: 命名空间Namespace一般与程序集Assembly名称一致。 一个程序集Assembly由多...方法的参数Parameter有类型,参数名,默认值,是否引用参数ref,是否输出参数out
// 加载并初始化命令行参数指定的类 Class<?> classType = Class.forName(args[0]); // 获得类的所有方法 Method methods[] = classType.getDeclaredMethods(); for (int i = 0; i ; i++) { System.out....
//第二个参数method,被代理对象的接口方法 @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("做前置工作"); System.out.println("-------...
反射 1 反射概述 1.1 Java文件和.class文件的关系 Java文件 Java文件中包含代码的所有内容,类... Method 成员方法,方法权限修饰符,返回值类型,方法名,形式参数列表数据类型 总结: .class字节码文件中,包含
配置eclispe的编译与运行环境rar在eclispe中配置java模板代码.rar在eclipse中导入已有的工程.rarjava5的静态导入与...对接收数组参数的成员方法进行反射....数组与Object的关系及其反射类型.rar数组的反射应用.rar
PHP中的扩展反射类,该扩展用来分析php程序,导出或提取出关于类、方法、属性、参数等的详细信息,包括注释。看一个这样的问题,php类的成员变量没有在类中声明,而是在函数中声明,有什么不同?复制代码 代码如下:...
最近在开发过程中需要获取...当然前提是约定好了参数名称和get方法传值变量名一致。 采用PHP的反射API,获得函数参数名称和参数默认值的方法如下: 复制代码 代码如下: <?php class testClass{ public fu
编写对应Entity添加相关注解,并通过SqlUtil工具,传入相关参数生成SQL语句 例如:要生成对应数据库Person的SQL增删改查 SqlUtil.create(Person.class) SqlUtil.insert(Person.class) SqlUtil.insert(Person....
本文实例讲述了C#实现实体类与字符串互相转换的方法。分享给大家供大家参考。具体实现方法如下: using System; using System.Collections.Generic;... /// 将实体类通过反射组装成字符串 /// ///
不过通过反射调用的性能会远远低于直接调用——至少从绝对时间上来看的确是这样。虽然这是个众所周知的现象,我们还是来写个程序来验证一下。比如我们现在新建一个Console应用程序,编写一个最简单的Call方法。 ...