java中的invoke方法的作用,原理

求大神讲解一下invoke方法的机制,作用,原理,先谢谢了。

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Java中的invoke方法
用这种方法可以实现线程间的通信,具体的应用场景可以是从网络获取的数据传到前台去 上代码 MethodTest类 [html] view plain copy print?package com.test;      import java.lang.reflect.InvocationTargetException;  import java.lang.reflect.Method;  import
MethodInfo中Invoke方法
System.Reflection.MethodInfo mi = t.GetMethod(methodname);rnreturn mi.Invoke(obj, new object[] "2015" );rnrn这样写也不行System.Object[] array = new System.Object[]"2015" ;rnrnInvoke方法(object obj, object[] parameters)第二个参数是一个object[]rn我的写法有问题吗?怎么一直提示: 类型“System.String”的对象无法转换为类型“System.Object[]”。rnrnrn
c#中Invoke方法
invoke方法的初衷是为了解决在某个非某个控件创建的线程中刷新该控件可能会引发异常的问题。说的可能比较拗口,举个例子:主线程中存在一个文本控件,在一个子线程中要改变该文本的值,此时会有可能引发异常。 为了避免该问题,需要在子线程中使用invoke方法来封装刷新文本内容的函数。Invoke 或者 BeginInvoke 去调用,两者的区别就是Invoke 会导致工作线程等待,而BeginIn
Java中this关键字原理及作用
this关键字 一:this关键字的作用 *当方法的局部变量和类的变量名重名时,在不使用this的情况下会有什么结果? Person String name;//定义当前Person名字 //参数name是目标名字 //成员变量name是自己名字 public void sayHello(String name) { System.out.println(name+",你好。我是"+name...
JAVA中Method类invoke方法实例
package comm.test.invoke; public class DemoA { public void hot(String str){ //打印传入的字符串 System.out.println(str); } } package comm.test.invoke; import java.lang.reflect.Method; publ
java中的invoke问题
我java只是半桶水主要是做C#的,现在公司有个java系统要我来维,调试时只要到调用invoke就会报空指针,真是郁闷死我了几天了一点进展也没有,请大虾们指点一下,invoke里面是怎么工作的?或者调试时没有没办法进入invoke里面去?
Invoke 方法
哪位达人可以说明一下 Invoke 方法使用的场合和意义呢.rn对了,最好同时说一下 BeginInvoke 方法.rnrn谢谢谢谢rn
笔记:invoke方法和invoke字节码
invoke方法是实现代理的重要方法,代理又是AOP编程的重点,对于spring框架等是掌握的基础
杂论-Java中的invoke
代码 public class T1 { public void show() { System.out.println("实例方法"); } public static void show1() { System.out.println("类方法"); } public static void main(Str...
java反射的原理,作用
什么是反射,反射原理 Java反射的原理:java类的执行需要经历以下过程, 编译:.java文件编译后生成.class字节码文件 加载:类加载器负责根据一个类的全限定名来读取此类的二进制字节流到JVM内部,并存储在运行时内存区的方法区,然后将其转换为一个与目标类型对应的java.lang.Class对象实例 连接:细分三步 验证:格式(class文件规范) 语义(final类是否有子类)...
java反射原理及作用
j2me 是电子数 希望大家喜欢 我都库了,怎么传不上去啊
java虚拟机的原理和作用
java虚拟机的原理和作用,更深层地了解java程序的运行
Java中finalize()方法的作用
finalize方法是Object提供的的实例方法,使用规则如下: 当对象不再被任何对象引用时,GC会调用该对象的finalize()方法 finalize()是Object的方法,子类可以覆盖这个方法来做一些系统资源的释放或者数据的清理 可以在finalize()让这个对象再次被引用,避免被GC回收;但是最常用的目的还是做cleanup Java不保证这个finalize()一定被执行;但是...
java中clone 方法的作用
关与java中clone()方法的介绍与使用
JAVA中toString方法的作用
因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”。 它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法 总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法 回答补充:写这个方法的用途就是为了方
Java toString
因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”。它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法
java中trim()方法的作用
trim()方法返回调用字符串对象的一个副本,但是所有起始和结尾都被删掉了。例如:String s="   HelloWorld   ".trim()就把"HelloWorld"存入到s中了。
Java中clone()方法的作用
Java在处理基本数据类型(例如int、char、double等)时,都是采用值传递(传递的是输入参数的副本)的方式执行,除此之外的其它类型(对象啊,String类型等)都是按引用传递(传递的是对象的一个引用)的方式执行。对象除了在函数调用时是引用传递,在使用“=”也是采用引用传递。 class Obj { private int i = 0; public int getI() { ...
JAVA中tostring方法的作用
因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”。   它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法   总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法   回答补充: ...
ListBox1.Invoke(new SetTextCallback(SetText)) 中 INVOKE的作用
public partial class Form1 : Formrn rnrn private IPAddress serverIP = IPAddress.Parse("127.0.0.1");//以本机作测试rn private IPEndPoint serverFullAddr;//完整终端地址rn private Socket sock;rn Thread myThead = null;rn public Form1()rn rn InitializeComponent();rn rnrn //启动rn private void btnConn_Click(object sender, EventArgs e)rn rn myThead = new Thread(new ThreadStart(BeginListen));rn myThead.Start(); rn rnrn private void BeginListen()rn rn serverIP = IPAddress.Parse(tbxIP.Text); rn serverFullAddr = new IPEndPoint(serverIP, int.Parse(tbxPort.Text));rn sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);rnrn //指定本地主机地址和端口号rnrn sock.Bind(serverFullAddr);rn [color=#FF0000]ListBox1.Invoke(new SetTextCallback(SetText), "启动成功 时间:" + DateTime.Now, 1);[/color]rn rn[color=#FF00FF] // 问题有两个rn // 1、为什么不直接用 ListBox1.Items.Add(text) ?rn // 2、ListBox1.Invoke 中的 Invoke 什么 作用 ?[/color]rn rnrn byte[] message = new byte[1024];rn string mess = "";rn while (true)rn rnrn sock.Listen(5);//设置监听频率rn Socket newSocket = sock.Accept();//阻塞方式rn int bytes = newSocket.Receive(message);//接收数据rn mess = Encoding.Default.GetString(message, 0, bytes);rn ListBox1.Invoke(new SetTextCallback(SetText), mess, 1);//子线程操作主线程UI控件rnrn rn rnrn #region//声名委托rn delegate void SetTextCallback(string text, int num);rn private void SetText(string text, int num)rn rn ListBox1.Items.Add(text);rn rn rnrn
Method类中的invoke()方法?
在Method 类中有一个方法invoke(),它的定义是:rnrnpublic Object invoke(Object obj,rn Object... args)rn throws IllegalAccessException,rn IllegalArgumentException,rn InvocationTargetExceptionrn请问invoke方法的作用是什么?另外参类args是什么意思?请朋友帮我解答,我在学sping要用到动态代理,这没搞不清就不好理解spring了。
求教BHO中Invoke方法
请教,BHO中Invoke方法获取到IE的事件,如果让事件就此停住,不再继续?rnrn我现在通过dispidMember == 225 获取到打印事件,无论我是通过S_FAIL , 还是S_FALSE返回,都会继续弹出打印窗口,如果让其终止事件继续???
c#学习笔记之Invoke()作用分析
Invoke()的作用是:在应用程序的主线程上执行指定的委托。一般应用:在辅助线程中修改UI线程( 主线程 )中对象的属性时,调用this.Invoke(); 1. //测试的窗体 2. public class TestForm : Form 3. { 4. //创建一个Button对象 5. private Button button = new B
java基础——反射的作用和原理
1、定义: 反射机制是在运行时,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意个对象,都能够调用它的任意一个方法。在java中,只要给定类的名字,就可以通过反射机制来获得类的所有信息。 这种动态获取的信息以及动态调用对象的方法的功能称为Java语言的反射机制。 2、在哪里使用反射机制? jdbc中有 Class.forName('com.mysql.jdbc.Dr...
java中,invoke如何翻译????????????????
-
深入理解java反射机制中Method类中的invoke()方法
1.先说明Method类中的几个重要的属性 1)Method类型的root属性: 可以理解为每一个 java方法都有唯一的一个Method对象,这个对象就是root,我们可以利用反射创建java方法的众多的Method类的对象,这些对象指向root,可以理解为root的镜像。 2)MethodAccessor类型的 methodAccessor属性: 每一个Method对象有一个root属
Method的invoke()方法的使用
public Object invoke(Object obj, Object... args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetE
急!!关于INVOKE方法~~
请问,如果我主线程用了thread.sleep之后,INVOke方法还能实现与它的同步吗?rnrn比如我是用串口发数据给下位机,利用DATARECEIVED事件处理返回的数据并更新界面rnrn我发送了数据之后调用了SLEEP方法休眠1S,这个时候DATARECEIVE被触发了并调用了我定义的一个INVOKE方法更新界面,请问这个时候还能同步到UI线程吗?也就是想问我的INVOKE方法能在这1S内调用吗?还是必须等休眠完以后再调用??rnrn谢谢!!
Method类的Invoke方法
Dto:dto里面放的都是同一类型的字段 /* * Creation : 2 Dec 2015 */ package com.java.invoke; public class Dto { private Integer Col1; private Integer Col2; private Integer Col3; private Integer Co
关于java反射的invoke方法报错
[code=Java]public void invokeMethod(Object owner)throws Exceptionrn Class obj = owner.getClass();rn Method[] me = obj.getDeclaredMethods();rn for(Method object : me)rn object.setAccessible(true);rn Class [] param= object.getParameterTypes();rn if (param.length != 0) rn object.invoke(owner, (Object)param);rn elsern object.invoke(owner);rn rn rn [/code]rnrn以上是我的解析方法,IDE报错为:rnException in thread "main" java.lang.IllegalArgumentException: wrong number of argumentsrn at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)rn at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)rn at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)rn at java.lang.reflect.Method.invoke(Method.java:597)rn at JavaReflection.JavaReflection.invokeMethod(JavaReflection.java:43)rn at JavaReflection.JavaReflection.main(JavaReflection.java:82)
PHP 面向对象之 __invoke() 方法
<?php class CallableClass { public function __invoke($param1, $param2) { var_dump($param1,$param2); } } $obj = new CallableCalss; $obj(123, 456); var_dump(is_callable($obj)...
kotlin方法的执行 invoke
fun tryOpenController() { paramManager.getParamByDefault { openByParam(it) } } fun getParamByDefault(callback: ((param: CameraParam) -> Unit)?) { callback?.invoke(defaultP...
关于Invoke方法的使用
我在Winform中使用Invoke在多线程的方法下更新界面rn现在我要把C/S模式改为B/S模式rn在多线程的下更新界面应该怎么做呢
反射之invoke方法
当获得类对应的Class对象后,可以通过getMethods()方法得到全部方法——返回Method数组,或者getMethod()方法来获取指定方法——Method对象。 可以通过Method对象的invoke()方法来调用它对应的方法。 Object invoke(Object obj, Object...args): obj是执行该方法的Class对象,args是执行该方法时传入的实参。
invoke方法学习
1
关于线程和 Invoke() 方法
[code=delphi] rnprivate delegate void listviewClient(ListViewItem item); //声明委托rnprivate void button1_Click(object sender, EventArgs e)rn rn Thread uploadThread = new Thread(new ParameterizedThreadStart(upLoad));rn uploadThread.IsBackground = true;rn uploadThread.Start();rn rnrnprivate void upLoad(object objdate)rnrn ListViewItem lviheader = new ListViewItem();rn lviheader.Text = "12345";rnrn if (listView1.InvokeRequired)rn rn listviewClient lv1 = new listviewClient(listViewAdd); //因为需要调用住窗体的 listView 控件,所以使在线程中使用委托rn Invoke(lv1, lviheader);rn rn elsern rn listView1.Items.Add(lviheader);rn rn rn lviheader.Text = "54321"; //当Invoke()执行完以后,再改变lviheader.Text的值,就出现异常rnrnrnprivate void listViewAdd(ListViewItem item)rn rn listView1.Items.Add(item);rn rn[/code]rnrn[color=#FF0000]当Invoke()执行完以后,再改变lviheader.Text的值,就出现异常:rn“线程间操作无效: 从不是创建控件“listView1”的线程访问它。”[/color]rn求高人指点并解释一下,不胜感激!
请问Invoke方法的使用??
本人学习c#,做了一个用到多线程的小项目,老师介绍我们Invoke方法来执行指定委托,我看了一下,觉得直接执行委托,而不用Invok方法不也可以吗?看了下帮助,说Invoke是要在什么拥有基础线程句柄窗口上执行,想问各位大哥大姐,Invoke究竟怎么用?什么时候用啊?
Java反射问题invoke方法疑惑
今天需要通过反射写一个类操作一个bean,据我以前的知识体系java中的Method类中的invoke方法的两个参数的意思为:第一个参数是具体调用该方法的对象,第二个参数是执行该方法的具体参数。所以带着自信一口气写完后发现输出的结果为空,最后我左改改,又查查就改成现在这个样子了,但是发现自己糊涂了,发现程序中两个invoke方法的第一个参数不同。在此希望各位大神帮忙看看,小弟感激不尽。[color=#FF0000]疑问产生于程序代码的36-48行。[/color]rn[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]rn[code=java]package org.cqut.java.reflection;rnrnimport java.lang.reflect.Constructor;rnimport java.lang.reflect.Field;rnimport java.lang.reflect.Method;rnrnpublic class CopyObject rnrn public Object copyObject(Object object) throws Exception rnrn // 1.获取待操作类的一个Class对象rn Class classType = object.getClass();rnrn // 2.获取待操作类的一个实例rn Constructor constructor = classTypern .getConstructor(new Class[] );rn Object copyObj = constructor.newInstance(new Object[] );rnrn // 3.获取被拷贝类的成员变量rn Field[] fields = classType.getDeclaredFields();rnrn for (Field field : fields) rn // 4.遍历数组获取各个成员变量名字rn String name = field.getName();// 获取成员变量名字;rnrn // 5.操作字符串获取成员变量的set和get方法名字;rn String firstLetter = name.substring(0, 1).toUpperCase();rn String getMethodName = "get" + firstLetter + name.substring(1);rn String setMethodName = "set" + firstLetter + name.substring(1);rnrn Method getMethod = classType.getMethod(getMethodName,rn new Class[] );rn Method seMethod = classType.getMethod(setMethodName,rn new Class[] field.getType() );rn rn /*最开始认为以下两个invoke方法的第一和参数都应该调用copyObj,rn * 但是最终的结果为输出为默认的空值。rn * copyObj:程序前面通过Constructor类的newInstance方法rn * 获取待操作类的一个实例;rn //Object value = getMethod.invoke(copyObj, new Object[] );rn //seMethod.invoke(copyObj, new Object[] value );rnrn /*现在改用如下方式了,输出就正常了rn * 所以产生疑惑:为什么第一个方法调用的object对象而不是copyObj呢?rn * rn */rn Object value = getMethod.invoke(object, new Object[] );rn seMethod.invoke(copyObj, new Object[] value );rnrn rn rnrn return copyObj;rn rnrn public static void main(String[] args) throws Exception rnrn Student student = new Student("Tom", 21);rn student.setId(111030805);rn CopyObject copy = new CopyObject();rn Student student2 = (Student) copy.copyObject(student);rn System.out.println(student2.getId() + " " + student2.getName() + " "rn + student2.getAge());rn rnrnrn// 一个被反射的JavaBeanrnclass Student rnrn private long id;rn private String name;rn private int age;rnrn public Student() rnrn rnrn public Student(String name, int age) rn this.name = name;rn this.age = age;rn rnrn public String getName() rn return name;rn rnrn public void setName(String name) rn this.name = name;rn rnrn public int getAge() rn return age;rn rnrn public void setAge(int age) rn this.age = age;rn rnrn public long getId() rn return id;rn rnrn public void setId(long id) rn this.id = id;rn rnrn[/code]
#! 的作用原理
在实验楼学习python3简明教程时,里面的python文件开头都会加上一句 #!/usr/bin/env python3 开始还以为是个注释什么的,后来才发现当在命令行里执行python文件时,就不用输入 python xxx.py 而是,直接运行 ./xxx.py 不太懂其中的原理,就上网查了一下,才明白#!的作用 1.如果脚本文件没有#!这一行或者#!指定的解释程序不是可执行文件,那么...
Java动态加载一个类的几种方法以及invoke
接口 IUser package org.me.javaapp; /** * * @author Administrator */ public interface IUser { } User.java /* * To change this license header, choose License Headers in Project Propertie
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件