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


在工具类 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 代码没有改动,我们也需要重新编译。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值