快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

传递原始类型参数给方式

术语 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" 选项。





返回类别: 教程
上一教程: 在java体系结构中集成Macromedia Flex(翻译)
下一教程: 整合PDF和Java技术

您可以阅读与"传递原始类型参数给方式"相关的教程:
· Java的参数传递的唯一方法:传值(By Value)
· 复杂类型javabean(数组成员)在jsp中的运用:在jsp页面间传递数组
· Java 按值传递参数
· javascript向jsp传递参数的一种手段:使用xmlhttp对象
· String类型两种不同实例化方法
    微笑服务 优质保证 索取样品