• 匿名内部类的参数引用只能是final,可能遇到的问题及其解决


    这个是我碰到比较多次的问题,一开始是不解,不过查了下大家都觉得没什么,而且只是加个final好像影响也不大,于是我就直接加个final了事,之后也不管了
    直到昨天:
    遇到了这个宿命般的问题
    难道解决方法是把它换成引用类型?
    我去,居然不行,包装类不能改变值,尼玛,怎么会这么巧
    嘿,妈的,那就自己来!自己定义一个类型!
     
    所以这样直接改成final果然是会遇到问题的,比如我希望它变的时候,最简单的情况就是一个for循环的i++
    于是我很自然去查看了final的特性,发现有个可以利用的漏洞,那就是对于引用类型final只是限定了它栈中的地址不能改,而堆中的值可以随便改
    于是我马上想到了int的包装类,为此我特地好好看了下Intger,结果发现它没有只改变值的API!
     
    短暂的挫折过后,我立刻想到了,那还不简单,自己定义一个类型就好了,比如这样:
    自己定义了一个简单的类型:
     
    本来以为这个事情就这么完美结束了,直到我今天查其他资料的时候,看到有人用了这么一个非常机智的技巧:
     
     
    这才真是完美!所以有时候还是需要一点机智
     
     
    具体为什么要这样好像比较复杂,暂时跳过:
  • 相关阅读:
    微信小程序 'errcode' => 47003,'errmsg' => 'argument invalid! hint
    微信分账
    Acwing-----1016. 最大上升子序列和
    Acwing-----1012. 友好城市
    Acwing-----482. 合唱队形
    Acwing-----1014. 登山
    Acwing-----1017. 怪盗基德的滑翔翼
    Acwing-----275. 传纸条
    Acwing-----1027. 方格取数
    Acwing-----1018. 最低通行费
  • 原文地址:https://www.cnblogs.com/bellkosmos/p/5341720.html
Copyright © 2020-2023  润新知