通过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为该 方法 所在的对象。 调用 成功后,返回该 方法 的返回值。