Method invoke(Object obj, Object... args)

fuyou001 2009-08-14 02:47:35
参数 为什么还有...号,源代码里的方法也有,这是什么语法


invoke(throwable, new Object[] { cause });这样调用,第二个参数 是个数组对象,如果一个方法有多个参数 ,数组里的参数类型怎么与方法参数匹配,从数组 里第0个。。。到第n个,匹配方法的从左到右的顺序吗
...全文
495 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
24K純帥 2009-08-18
  • 打赏
  • 举报
回复
up
pupppet 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 islandrabbit 的回复:]
引用 12 楼 fuyou001 的回复:
引用 8 楼 bao110908 的回复:
invoke(user, 3L, "test"); 就可以了。

Method api里没有看到这个方法,只看到 invoke(throwable, new Object[] { cause });
这个方法在哪呢


好像没有啊。
[/Quote]
8楼只是具体举一个例子而已
Method.invoke(Object obj,Object...args) Method是你要执行的方法,obj是执行这个方法的对象(或者说是方法所在的类的实例),args是方法参数,...表示参数个数是可变的,可以是0个,也可以是多个
如果看了反射,这个就会知道的
fuyou001 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 bao110908 的回复:]
invoke(user, 3L, "test"); 就可以了。
[/Quote]
Method api里没有看到这个方法,只看到 invoke(throwable, new Object[] { cause });
这个方法在哪呢
islandrabbit 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 fuyou001 的回复:]
引用 8 楼 bao110908 的回复:
invoke(user, 3L, "test"); 就可以了。

Method api里没有看到这个方法,只看到 invoke(throwable, new Object[] { cause });
这个方法在哪呢
[/Quote]

好像没有啊。
feishare 2009-08-15
  • 打赏
  • 举报
回复
见识了,顶个!
islandrabbit 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 viszl 的回复:]
Java codepublicstaticvoid m2(String... str){//String...代表传参数的时候可以传任意个String类型的参数,str是相应类型的数组for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}
}
可变长参数类型可以兼容数组参数类型,但是数组参数类型不能兼容可变长参数类型。
但是主方法中public static void main(String[] args)中传给主方法的是单个字符串,这是因为java虚拟机自动把主方法中的参数包装成了数组。
一个方法最多只能有一个可变长参数,而且该可变长参数还必须是该方法的最后一个参数。
[/Quote]

支持,顶。
blliy117 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 believefym 的回复:]
可变参数

你的问题好像没什么意义吧,不存在数组跟方法参数的匹配问题
method(T...t)
method(T[]t)
这两个等价的,直接在方法体里使用即可,lz的匹配又指的是什么呢?
[/Quote]

是这样的!说得很好
  • 打赏
  • 举报
回复
invoke(user, 3L, "test"); 就可以了。
lulu0126 2009-08-14
  • 打赏
  • 举报
回复
不说啥了!

以前真是见识浅了!

感谢各位大侠了!
fuyou001 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 believefym 的回复:]
可变参数

你的问题好像没什么意义吧,不存在数组跟方法参数的匹配问题
method(T...t)
method(T[]t)
这两个等价的,直接在方法体里使用即可,lz的匹配又指的是什么呢?
[/Quote]
我说的匹配 update(Long userId,String name )//这个方法要的参数类型是long ,String

而用invoke(User, new Object[] { new Long(3),new String("test")}); //这里的object数组 是不是必须要按long 型,String这样建数组
loveofmylife 2009-08-14
  • 打赏
  • 举报
回复

public static void m2(String... str){
//String...代表传参数的时候可以传任意个String类型的参数,str是相应类型的数组
for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}
}

可变长参数类型可以兼容数组参数类型,但是数组参数类型不能兼容可变长参数类型。
但是主方法中public static void main(String[] args)中传给主方法的是单个字符串,这是因为java虚拟机自动把主方法中的参数包装成了数组。
一个方法最多只能有一个可变长参数,而且该可变长参数还必须是该方法的最后一个参数。
humman7 2009-08-14
  • 打赏
  • 举报
回复
jdk1.5开始有的可变参数
believefym 2009-08-14
  • 打赏
  • 举报
回复
可变参数

你的问题好像没什么意义吧,不存在数组跟方法参数的匹配问题
method(T...t)
method(T[]t)
这两个等价的,直接在方法体里使用即可,lz的匹配又指的是什么呢?
好吃的松子 2009-08-14
  • 打赏
  • 举报
回复
查了下,这种写法在内部实现时是把args当作一个数组用
参考
http://blog.csdn.net/wfy1987/archive/2009/03/16/3993468.aspx
好吃的松子 2009-08-14
  • 打赏
  • 举报
回复
也很奇怪这个语法怎么实现的,它能实现这个方法可以使用两个及两个以上参数

很神奇

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧