通过Java的反射机制调用某个方法,并传入参数。

1.只传入一个参数hello world:

import java.lang.reflect.Method;
import java.util.Date;

public class InvokeMethodTest {
public static void main(String[] args) {
test1();
}

public static void test2() {
try {
Class<?> c = Class.forName("java.util.Date");
// 反射类的方法:
Method m = c.getMethod("getTime", new Class<?>[] {});
long l = (Long) m.invoke(c.newInstance(), new Object[] {});
System.out.println(l);
// 反射一个类的实例:
Date d = (Date) c.newInstance();
System.out.println(d.getTime());
} catch (Exception e) {
}
}

public static void test1() {
try {
Class<?> c = InvokeMethodTest.class;
// 反射类的方法:
Method m = c.getMethod("print", String.class);
m.invoke(c.newInstance(),"hello world");
} catch (Exception e) {
System.out.println(e);
}
}

public static void print(String printData) {
System.out.println("=====================================");
System.out.println(printData);
}

public static void print(String firstPrintData,String secondPrintData) {
System.out.println("=====================================");
System.out.println("firstPrintData:"+firstPrintData+", secondPrintData:"+secondPrintData);
}
}

2.传入两个参数hello world以及 i am lee

import java.lang.reflect.Method;
import java.util.Date;

public class InvokeMethodTest {
public static void main(String[] args) {
test1();
}

public static void test2() {
try {
Class<?> c = Class.forName("java.util.Date");
// 反射类的方法:
Method m = c.getMethod("getTime", new Class<?>[] {});
long l = (Long) m.invoke(c.newInstance(), new Object[] {});
System.out.println(l);
// 反射一个类的实例:
Date d = (Date) c.newInstance();
System.out.println(d.getTime());
} catch (Exception e) {
}
}

public static void test1() {
try {
Class<?> c = InvokeMethodTest.class;
// 反射类的方法:
Method m = c.getMethod("print", String.class, String.class);
m.invoke(c.newInstance(),"hello world","I am lee");
} catch (Exception e) {
System.out.println(e);
}
}

public static void print(String printData) {
System.out.println("=====================================");
System.out.println(printData);
}

public static void print(String firstPrintData,String secondPrintData) {
System.out.println("=====================================");
System.out.println("firstPrintData:"+firstPrintData+", secondPrintData:"+secondPrintData);
}

可以比较 这两句话有什么区别,就可以知道更多的参数该怎样传,简单但是很少用到过,记录一下收工

Method m = c.getMethod("print", String.class, String.class);
m.invoke(c.newInstance(),"hello world","I am lee");

通过Java的反射机制调用某个方法,并传入参数。1.只传入一个参数hello world:import java.lang.reflect.Method;import java.util.Date;public class InvokeMethodTest {    public static void main(String[] args) {        test1();...
近期看到 invoke 方法 第一个 参数 的另外一种传法,如下: public class Event { public static final String TAG= "Event"; public static void test(){ Log.d(TAG, "Event test: "); Class<?> aClass = Cl...
反射 传人多 参数 方法 文章目录 反射 传人多 参数 方法 一、单个 方法 传入多 参数 ?1.创建一个 方法 2.创建一个 调用 方法 的主 方法 二丶读取本地文件的方式总结 一、单个 方法 传入多 参数 ? 1.创建一个 方法 package com.system.modules.admin.product.service; import java .util.Arrays; * @author xiaole public class Test3 { public void method(Object... objs) {
对于外部 调用 的动态库应用 反射 时要用到Assembly.LoadFile(),然后才是获取类型、执行 方法 等; 当用 反射 创建当前程序集中对象实例或执行某个类下静态 方法 时只需通过Type.GetType("类的完整名")。 using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks;
通过 反射 的机制,可以通过 invoke 方法 来 调用 类的函数。 invoke 函数的第一个 参数 是 方法 的实例,如果该 方法 是静态 方法 ,可以用null或者用类来代替,第二个 参数 是变长的,是 调用 该 方法 的 参数 。 package com.tn.class; import java .lang.reflect.Method; import java .util.Arrays; public class Client { public static void main(String[] args) throws Except
在框架中经常会会用到method. invoke () 方法 ,用来执行某个的对象的目标 方法 。以前写代码用到 反射 时,总是获取先获取Method,然后传入对应的Class实例对象执行 方法 。然而前段时间研究 invoke 方法 时,发现 invoke 方法 居然包 含 多态的特性,这是以前没有考虑过的一个问题。那么Method. invoke () 方法 的执行过程是怎么实现的?它的多态又是如何实现的呢? 本文将从 java 和JVM的源码实现深入探讨 invoke 方法 的实现过程。 首先给出 invoke 方法 多态特性的演示代码: public
1. 获取该类的Class对象,如:Class cls = obj.getClass()。 2. 通过Class对象获取该 方法 的Method对象,如:Method method = cls.getMethod("methodName", parameterTypes)。 3. 调用 该 方法 ,如:Object result = method. invoke (obj, args)。 其中,methodName为需要 调用 的 方法 名,parameterTypes为该 方法 的 参数 类型数组,args为该 方法 的 参数 值数组,obj为该 方法 所在的对象。 调用 成功后,返回该 方法 的返回值。