免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1261 | 回复: 0
打印 上一主题 下一主题

what is signature in java? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-16 10:52 |只看该作者 |倒序浏览

                   最近在看JMX的文档,经常会看一个叫signature的东西,比如在JSR160中 Object MBeanServerConnection.
invoke
(
ObjectName
name,
      
String
operationName,
      
Object
[] params,
      
String
[] signature)方法,第四个参数就是signature,这个函数的用来调用MBean上的操作。signature意思就是操作(方法)的签名。但是对于它是描述些东西却不是很了解,于是在求助于网络,在这里http://www.javaworld.com.tw/jute/post/view?age=0&bid=29&ppg=1&sty=1&id=183185&tpg=1找到了答案,整理了一下:
    在1.5以前,一般提到的 "operation(method_
signature",它可以说是一个操作(方法)的一种规格(名称、参数类型及参数的顺序),如果一个类中有两个操作(方法) 的 signature 是相同的,即是说其名称、参数类型及参数的顺序是完全相同,就不符合Java PL 的规范了。比如下面例子
public class Foo {
  public void bar(String s) {...}
  public void bar(String s, int n) {...}
Foo类中兩个 bar method 的参数数量不同,它们的signature就不同了,形成一组 overloading methods。所以因一个类中可以有多个名称一样的方法,提到方法时就必須把参数类型和顺序也加进去,用signature来区分具体的哪一个方法。
public class Foo1 {
  public Integer getData() {...}
  public String getData() {...}
}
像这个Foo1类, 方法getData()的signature是一样,就不合JAVA PL规范了。
但是在1.5以后,泛型的加入,signature所要表达的东西又有些不一样了,在vm spec中对signature的定义是会加上泛类位,
方法及类型等泛型信息。
如JRE 1.5 core classes里面的
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html 中
public static  
replaceAll(java.util.List,
T oldVal,T newVal)
)
这个方法就等同于
[color="#555555"]1
public static Object boolean replaceAll(java.util.List, java.lang.Object, java.lang.Object)
它的signature 是:
[color="#336699"](Ljava/util/List;TT;TT;)Z
       
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/93476/showart_1864533.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP