`

一个例子弄懂invoke()方法

 
阅读更多
import java.lang.reflect.Method;

public class InvokeTester {

 public int add(int param1, int param2) {
  return param1 + param2;
 }

 public String echo(String mesg) {
  return "echo " + mesg;
 }

 public static void main(String[] args) throws Exception {
  Class classType = InvokeTester.class;
  Object invokertester = classType.newInstance();
  
  Method addMethod = classType.getMethod("add", new Class[] { int.class,
    int.class });
  //Method类的invoke(Object obj,Object args[])方法接收的参数必须为对象,
  //如果参数为基本类型数据,必须转换为相应的包装类型的对象。invoke()方法的返回值总是对象,
  //如果实际被调用的方法的返回类型是基本类型数据,那么invoke()方法会把它转换为相应的包装类型的对象,
  //再将其返回
  Object result = addMethod.invoke(invokertester, new Object[] {
    new Integer(100), new Integer(200) });
  //在jdk5.0中有了装箱 拆箱机制 new Integer(100)可以用100来代替,系统会自动在int 和integer之间转换
  System.out.println(result);

  Method echoMethod = classType.getMethod("echo",
    new Class[] { String.class });
  result = echoMethod.invoke(invokertester, new Object[] { "hello" });
  System.out.println(result);
 }
}

 

分享到:
评论

相关推荐

    C#串口操作小例子,P/Invoke

    P/Invoke的工作原理是定义一个托管的函数声明,该声明对应于非托管库中的函数。在本例中,可能是调用了Windows API中的串口管理函数,如`CreateFile`,`SetCommState`,`ReadFile`和`WriteFile`等。这些函数允许我们...

    C#窗体中Invoke和BeginInvoke方法详解

    - **Invoke**: 是一个同步方法,调用后会阻塞当前线程直到GUI更新完成。适用于简单的操作,如更新文本或按钮状态。 - **BeginInvoke**: 是一个异步方法,调用后立即返回,不会阻塞调用线程。更适合处理耗时较长的...

    黑马程序员------代理类中invoke方法注意点

    `InvocationHandler`接口只有一个`invoke`方法,其签名如下: ```java public interface InvocationHandler { Object invoke(Object proxy, Method method, Object[] args) throws Throwable; } ``` 这个方法...

    C# 线程访问UI 代理Invoke技术 标准实现

    在这个例子中,`BackgroundWorker_DoWork`方法在一个后台线程中运行,模拟了一个耗时操作。当操作完成后,它创建一个`UpdateUI`委托实例,并将其传递给`label1.Invoke`。`Invoke`方法会确保`UpdateLabel`方法在UI...

    socket invoke 小例子

    socket 源码程序 包含socket服务端 ,客户端,通过 Networkstream 流 streamReader /streamWriter进行动态获取写入信息。并且使用 委托 invoke ==

    详解Java中Method的Invoke方法

    一个方法可以生成多个 Method 对象,但只有一个 root 对象,主要用于持有一个 MethodAccessor 对象,这个对象也可以认为是一个方法只有一个,相当于是 static 的。因为 Method 的 invoke 是交给 MethodAccessor 执行...

    委托delegate invoke的简单源代码,适合委托初学者!

    在这个例子中,`MyDelegate`是自定义的委托类型,它定义了一个接受字符串参数并返回无类型的方法签名。`PrintMessage`方法符合这个签名,所以我们可以通过`new MyDelegate(PrintMessage)`将它绑定到委托。然后,通过...

    C# Invoke调用Demo

    - `Invoke`: 这是一个同步方法,它会阻塞当前线程,直到被调用的方法在UI线程上完成执行。这适用于那些需要等待结果的情况。 - `BeginInvoke`: 这是异步方法,它不会阻塞当前线程,而是立即返回,让UI线程在适当的...

    C#中,使用Thread新创建一个线程来查询数据库中的信息显示在控件“listView1”上,需要使用Invoke(代理名)方法来访问控件“listView1”,

    - `Invoke`方法接受一个委托对象作为参数,并调用该委托所指向的方法。 - `Invoke`方法确保了控件的访问是在正确的线程中进行的,从而避免了跨线程访问的问题。 #### 四、数据库查询与结果显示 `SelecDB`方法负责...

    Invoke反射

    在这个例子中,`GetMethod`用于获取`TestClass`的`PrintMessage`方法,然后`Invoke`方法被用来在创建的实例上执行这个方法,传入参数"Hello, World!"。 反射和Invoke的应用场景广泛,包括但不限于: 1. **插件系统*...

    C#Control.Invoke方法和跨线程访问控件共

    在多线程编程中,我们经常遇到需要在一个非UI线程(后台线程)操作UI控件的情况,这时就需要用到`Control.Invoke`方法。本文将深入探讨C#中的`Control.Invoke`方法以及如何正确地进行跨线程访问控件。 首先,理解...

    P/Invoke Interop 助手

    这个签名的转换,不只是适用于Windows的方法签名,只要给定一个C头文件,就可以转换成为相关的C#的import方法签名 作者:玛玛哈哈m 链接:https://www.jianshu.com/p/6b65175ce1d9 来源:简书 著作权归作者所有。...

    Invoke跨线程调用的代码

    忽略跨线程访问的错误 CheckForIllegalCrossThreadCalls = false,但是这个方法很不稳定,使用invoke方法解决跨线程访问的问题,里边有2个例子, 通过自己额外创建的线程改变label控件中的内容从而验证invoke方法

    WinForm下多线程配合Invoke函数ping百度实例。

    在Windows桌面应用开发中,WinForm是一个常用的框架,...综上所述,这个实例提供了关于如何在WinForm应用中有效利用多线程和Invoke方法的一个实际例子,对于理解和优化VB.NET应用程序的性能和用户体验具有重要意义。

    Python库 | invoke-0.11.0.tar.gz

    在这个例子中,`clean`函数就是一个任务,可以通过命令行`invoke clean`来执行。 `invoke`还支持任务依赖,可以定义一个任务依赖于另一个任务,通过`@task`装饰器的`precedes`参数来实现: ```python @task...

    Invoke-and-BeginInvoke.rar_The Difference_invoke

    当你在一个非UI线程中尝试访问或修改UI元素时,必须使用`Invoke`。它会阻塞调用线程,直到UI线程完成指定的委托操作。这样做的好处是可以确保所有UI更新按顺序执行,避免了并发问题,但缺点是可能会导致主线程(UI...

    P/Invoke Interop Assistant交互助手

    P/Invoke Interop Assistant是一个非常实用的工具,它专门用于帮助C#或VB.NET开发者将C或C++的函数和数据类型转换为.NET Framework兼容的形式。这个工具的主要目的是解决跨语言互操作性问题,即所谓的“平台调用”...

    Invoke 与BeginInvoke的区别

    下面通过一个具体的例子来进一步理解`Invoke`和`BeginInvoke`的区别: ```csharp private delegate void InvokeDelegate(); private void InvokeMethod() { // C代码段 } private void butInvoke_Click(object ...

Global site tag (gtag.js) - Google Analytics