最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java為什么匿名內(nèi)部類參數(shù)引用需要用final進行修飾?

 更新時間:2019年04月10日 11:59:26   作者:yangyongUestc  
今天小編就為大家分享一篇關于Java為什么匿名內(nèi)部類參數(shù)引用需要用final進行修飾?,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

事實上,除了匿名內(nèi)部類參數(shù),方法和作用域內(nèi)的內(nèi)部類內(nèi)部使用的外部變量也必須是final 的。原因大致總結(jié)一下:

簡單解釋就是:

方法中的局部變量的生命周期很短,方法結(jié)束后變量就要被銷毀,加上final是為了延長變量的生命周期。

進一步解釋:

內(nèi)部類通常都含有回調(diào),引用那個匿名內(nèi)部類的函數(shù)執(zhí)行完了就沒了,所以內(nèi)部類中引用外面的局部變量需要是final的,這樣在回調(diào)的時候才能找到那個變量,而如果是外圍類的成員變量就不需要是final的,因為內(nèi)部類本身都會含有一個外圍了的引用(外圍類.this),所以回調(diào)的時候一定可以訪問到。

程序示例:

private Animator createAnimatorView(final View view, final int position) {
    MyAnimator animator = new MyAnimator();
    animator.addListener(new AnimatorListener() {
      @Override
      public void onAnimationEnd(Animator arg0) {
        Log.d(TAG, "position=" + position); 
      }
    });
    return animator;
  }

匿名內(nèi)部類回調(diào)里訪問position的時候createAnimatorView()早就執(zhí)行完了,position如果不是final的,回調(diào)的時候肯定就無法獲取它的值了,因為局部變量在函數(shù)執(zhí)行完了以后就被回收了。所以java干脆把這樣的變量設計成final,一旦初始化,就必須不能改變!這樣保證任何時候進行回調(diào)都能得到所需的值。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接

相關文章

最新評論

揭阳市| 莫力| 泰来县| 襄垣县| 贵州省| 抚顺县| 建德市| 张家口市| 毕节市| 成安县| 禹州市| 五华县| 高平市| 安泽县| 普定县| 陆河县| 敦化市| 碌曲县| 南通市| 固始县| 保山市| 申扎县| 樟树市| 丰台区| 太仆寺旗| 长葛市| 蒲城县| 阳信县| 双桥区| 滨海县| 曲靖市| 张北县| 山阴县| 定西市| 沛县| 集贤县| 阿拉善右旗| 峨眉山市| 恩平市| 鄂伦春自治旗| 元谋县|