`
hkliya
  • 浏览: 85698 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

由Autoboxing\unboxing(自动装包\拆包)引起的问题

    博客分类:
  • j2ee
阅读更多


在工具类 HttpUtil 中有一个方法,它的返回类型是 int ,现需要把返回类型改为 Integer 类型,

因为 jdk5.0 以后引入了自动装包 \ 拆包特性,所以使用这个方法的客户端代码是不用更改的,于是将 HttpUtil 重新编译后提到生产环境,没有提它的客户端 UserManageAction 类(因为它的代码没有改动),但问题就此产生了,抛了一个 NoSuchMethod 异常。通过 JAD 反编译看到代码还是原来的代码,没有问题。但通过 javap -c UserManageAction 可以看到:

   2:   invokestatic    #3; //Method HttpUtil.getInt:(Ljava/lang/String;) I

也就是说它调用的是返回 Int 类型的那个方法 ,而那个方法已经不存在了。把 UserManageAction 重新编译一下,再用 javap 查看,发现它现在调用的是修改后的返回 Integer 的方法了,运行也就没有问题了。

   2:   invokestatic    #3; //Method HttpUtil.getInt:(Ljava/lang/String;)Ljava/lang/Integer;

所以尽管 UserManageAction 代码没有改动,我们也需要重新编译。

分享到:
评论

相关推荐

    OCJP认证-3期(PX017) 面向对象程序设计-Autoboxing.doc

    由于`testIfB("true")`会返回一个`Boolean`对象,`if`语句的条件部分是允许的,因为Java支持Autoboxing和Unboxing(自动拆箱),即将`Boolean`对象转换为`boolean`基本类型进行逻辑判断。因此,当`testIfA`被调用时...

    JDK1.5新特性介绍

    3. 自动装包/拆包(Autoboxing/unboxing) 自动装包是指基本类型与对应的包装类之间的自动转换,如`int`到`Integer`。自动拆包则相反,将包装类对象转换为基本类型。这使得基本类型和包装类可以无缝交互,如`...

    关于Java自动装箱(autoboxing)的一些意想不到的结果

    然而,这一特性可能会引起一些不易察觉的副作用,这些副作用往往是由于JVM对某些包装类对象实现了缓存机制所致。 1. ==和equals行为不一致:当使用自动装箱时,==比较的是对象的引用地址,而equals方法比较的是对象...

    Java中的自动装箱与拆箱Java开发Java经验技巧共6

    在Java编程语言中,自动装箱(Autoboxing)和自动拆箱(Unboxing)是两个重要的特性,它们简化了基本类型(如int、double等)与对应的包装类(如Integer、Double等)之间的转换过程。这些特性是在Java 5引入的,极大...

    JAVA的高级新特性

    - 自动装包(Autoboxing)和拆包(Unboxing)是Java 5引入的另一个重大改进。它使得基础数据类型(如int、char)与它们的包装类(如Integer、Character)之间的转换变得无缝。例如,可以直接将int赋值给Integer,反之...

    Java自动装箱与拆箱深度解析:原理、应用与性能考量

    在Java编程中,自动装箱(Autoboxing)和自动拆箱(Unboxing)是两个非常核心的概念,它们允许基本数据类型和它们对应的包装类之间无缝转换。这种转换机制在Java 5中引入,极大地简化了代码编写,但同时也带来了一些...

    JDK1.5和1.6新增特性[借鉴].pdf

    3. 自动装包/拆包(Autoboxing/Unboxing):JDK 1.5引入了自动装包和拆包功能,使得基本类型和它们对应的包装类之间可以无缝转换。例如,可以将int转换为Integer,反之亦然,无需手动调用构造函数或valueOf()方法。...

    jdk1.5 1.6 1.7的新特征总结

    3. 自动装包/拆包(Autoboxing/unboxing) 自动装包和拆包使得基本类型和它们对应的包装类之间可以无缝转换。这意味着你可以直接将基本类型与包装类互相赋值,而无需手动进行转换。例如,`int a = 3; Collection...

    Java中的自动装箱与拆箱_.docx

    在Java编程语言中,自动装箱(Autoboxing)和自动拆箱(Unboxing)是从Java 1.5版本开始引入的一项特性,其目的是简化原始类型(Primitive Types)与它们对应的包装类(Wrapper Classes)之间的转换过程。...

    java编程中自动拆箱与自动装箱详解

    1. 基本数据类型的自动装箱(Autoboxing) 自动装箱是指将基本数据类型(primitive type)转换为对应的包装器类型(wrapper class)。例如,int类型可以自动转换为Integer类型,double类型可以自动转换为Double类型...

    Java中的自动装箱和拆箱是什么?它们有什么作用?(java面试题附答案).txt

    在Java中,自动装箱(Autoboxing)和拆箱(Unboxing)是Java编译器提供的一种特性,用于在基本数据类型和对应的包装类之间进行自动转换。这种特性简化了编程过程中的类型转换操作,使得代码更为简洁易读。 **自动...

    GitHub 上标星 115k+ 的 Java 教程.pdf

    本文将对 Java 的基础知识点进行总结和解释,涵盖了Java 的基本数据类型、String 相关知识点、Object 方法、基本运算符、Autoboxing 和 Unboxing 等。 一、基本数据类型 Java 中的基本数据类型包括 byte、char、...

    Java语言 包装类讲解案例代码 ( 设计目的(作用)和用途、自动装箱与拆箱、常用方法、 null和默认值)

    自动装箱与拆箱:自动装箱(Autoboxing)指的是自动地将基本数据类型转换为对应的包装类对象;自动拆箱(Unboxing)则是将包装类对象自动转换为基本数据类型。 常用方法:演示如何使用包装类中的这些常见方法。 null...

    JDK 1.5新特性

    这些新特性包括泛型(Generics)、增强的“for”循环(Enhanced For loop)、自动装箱/拆箱(Autoboxing/Unboxing)、类型安全的枚举(Typesafe enums)、静态导入(Static import)以及元数据(Metadata)。...

    AutoBundle.zip

    **自动装箱(Autoboxing)** 自动装箱是指编译器自动将基本数据类型(如int、char、boolean等)转换为它们对应的包装类(如Integer、Character、Boolean等)的过程。在Java中,这是为了提供对对象操作的便利,因为...

    java学习笔记极品4

    随着Java 5.0的发布,自动装箱(autoboxing)和自动拆箱(unboxing)功能的引入极大地简化了这一过程。自动装箱允许开发者在无需显式转换的情况下,将基本数据类型自动转换为对应的包装类对象;而自动拆箱则实现了...

    详细介绍JDK1.5的各种新特性

    3. **自动装包与拆包(Autoboxing and Unboxing)**:这是对基本数据类型和对应的包装类之间自动转换的支持。例如,`int`与`Integer`可以自动相互转换,使得与对象的操作更加方便,减少了显式的转换代码。 4. **...

    JDK1.5,JDK1.5

    2. **自动装箱与拆箱(Autoboxing and Unboxing)** 自动装箱允许开发者在原始类型与对应的包装类之间无缝切换,无需手动进行转换。例如,`int`与`Integer`之间的转换可以自动完成。 3. **枚举类型(Enums)** ...

    BankingApplication:自动装箱,拆箱,包装器概念

    自动装箱(Autoboxing)是Java 5引入的一个特性,它允许我们将基本数据类型(如int、double、char等)自动转换为对应的包装器类对象(如Integer、Double、Character)。例如,当我们试图将一个int值放入只能存储...

Global site tag (gtag.js) - Google Analytics