网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  java传递对象给期望原始类型参数的方法     
  文章作者:未知  文章来源:水木森林  
  查看:110次  录入:管理员--2007-11-17  
 
  术语 autoboxing 是指创建一个代表一个原始类型数据的对象;术语 unboxing 是指创建一个代表一个对象的值的原始类型数据。java 1.5 中新的 autoboxing/unboxing 特性允许我们传递原始类型参数给那些期望包装对象的方法,同样地,也允许我们传递对象给那些期望原始类型参数的方法。
  
  例如,假设我们有一个方法 foo(interger val)。在 java 1.5 之前,为了传递一个一个原始类型值给这个方法,需要通过以下方式来做到:
  
  int primitiveval = 8;
  foo(integer.valueof(8));
  
  现在在 java 1.5 中,可以使用原始类型数据直接调用 foo,而无须创建包装类 integer 的实例,如下:
  
  foo(primitiveval);
  
  反之如果我们有一个期望原始类型参数的方法 bar(int val),一样有一种简单的方法处理。
  
  下面是老的方法:
  
  integer wrapper = new integer(8);
  bar(wrapper.intvalue());
  
  而这里是新方法:
  
  bar(wrapper);
  
  编译器已经为我们做了辅助工作。如果分析由编译器为下面这个类创建的代码,你会发现编译器使用了在老版本中完全一样的调用方式。这里有对 boxingtip 类运行 javap -c 的输出结果的摘要:
  
  public static void main(java.lang.string[]);
  ...
  10: bipush 9
  12: istore_2
  13: iload_2
  14: invokestatic  #4; //method
   java/lang/integer.valueof:(i)ljava/lang/integer;
  17: invokestatic  #5; //method foo:(ljava/lang/integer;)v
  20: aload_1
  21: invokevirtual  #6; //method java/lang/integer.intvalue:()i
  24: invokestatic  #7; //method bar:(i)v
  27: return
  ...
  
  在第14行,编译器调用了 integer 的静态方法valueof() 为 foo() 方法提供需要的值。在第21行,调用了现有 integer 实例的 intvalue() 方法提取 int 值传递给 bar() 方法。我们可以使用编译器提供的 autoboxing/unboxing 特性,而无须理解背后究竟发生了什么,但是知道编译器为你做了什么始终都不是一件坏事。
  
  在 java 1.5 中这个新特性不仅仅是提供了句法方便。它是进化,而不是革命,但是它是新时期的到来,它将会使编写 java 代码更加容易。
  
  public class boxingtip {
    public static void main(string []args) {
      integer wrapper = new integer(8);
      int primitivevalue = 9;
      
      foo(primitivevalue);
      
      bar(wrapper);
    }
  
    static void foo(integer val) {
      system.out.println( val);
    }
    
    static void bar(int val) {
      system.out.print(val);
    } 
  }
  
  注意:这个提示中的代码在 windows 2000 下使用 java build 1.5.0-beta-b32c 编译通过。如果要编译这段代码,必须使用 javac "-source 1.5" 选项。
 
 
上一篇: oracle有关linux常见问题的详细解答    下一篇: 使用quick在java对象和xml之间进行转换
  相关文档
在oracle中存取blob对象实现文件的上传和下载 11-17
tomcat下配置mysql数据库连接池 11-16
java短路运算符和非短路运算符 11-17
实战j2ee?开发购物网站(一) 11-17
sun发布基于ultrasparc t1的新服务器 11-17
jboss下的ejb3开发无状态会话bean 11-17
java网络五子棋的源代码 11-17
使用模仿对象进行单元测试 11-17
用java生成文本文件(收集) 11-17
用java得到excel中formula的值 11-17
java初学者如何迈出aop第一步 11-17
[java100例]017、文件对话框 11-17
了解servlet 11-17
用组件beanutils,dbutils简化jdbc操作 11-17
彻底明白java的io系统 11-16
如何在microsoft.net中自定义配置文件 11-17
java: isn‘t it ironic? 11-17
java 数据对象(jdo)介绍(一) 11-17
java socket编程(五) 11-17
用 ibm holosofx 进行业务流程管理 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息