学习笔记2:java 1.8 lamdba 表达式在android中的运用

来源:互联网 发布:rpg游戏源码 编辑:程序博客网 时间:2024/06/14 08:28

下面贴一段lamdba的简单运用代码

    //传统的内部类        mTvTest.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(getApplicationContext(), "lambda test", Toast.LENGTH_SHORT).show();            }        });        //直接写方法的(对象类型 标识符)        mTvTest.setOnClickListener((View v) -> {            Toast.makeText(getApplicationContext(), "lambda test one ", Toast.LENGTH_SHORT).show();        });        //直接写方法的(标识符)        mTvTest.setOnClickListener((v) -> {            Toast.makeText(getApplicationContext(), "lambda test two ", Toast.LENGTH_SHORT).show();        });        //去掉大括号的写法(标识符) (前提只有一行代码可以这样写)        mTvTest.setOnClickListener((v) -> Toast.makeText(getApplicationContext()                , "lambda test three", Toast.LENGTH_SHORT).show());

lambda 替代 new 一个 内部类 的写法,是非常爽的,省代码,刚开始看可能不熟悉.慢慢习惯,非常简单!

下面再贴一段lamdba的简单运用代码

   /**     * 测试 lambda 访问局部变量     */    public void testLambda() {        String logString = "I love coding !";        mTvTest.setOnClickListener((v) -> {            Log.d(TAG, logString);            Toast.makeText(getApplicationContext()                    , "lambda test four ", Toast.LENGTH_SHORT).show();        });    }

作用域:

与内部类相同:
1.在 lambda 表达式中访问 外层作用域 和老版本的 匿名对象 中的方式很相似。你可以直接访问标记了 final外层局部变量,或者 实例的字段 以及 静态变量

与内部类不同:
2.对于局部的变量访问,可以不使用 final 修饰,这与内部类是不同的.
但是: 依然不能 在表达式中 重新 给局部变量 赋值 ,否则编译依然不通过.

3.在 内部类 中,可以调用接口的 defult 方法,但是在 lambda 表达式中,这是不可以的,如果调用,会引起 编译报错 .

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 临时号牌 正式牌照到了临牌还能用吗 新交规2018新车不挂临牌 运城临猗 运城到临猗104线路图 临猗蛋糕店 运城临猗房价 临猗吧 临猗县 运城市临猗县 临界血线 临界风险 唐筛临界 超临界 临界十缨 临界天下 临界温度 临界点 临界 临界力 临界婚姻分集剧情介绍 唐氏筛查临界风险 唐氏筛查临界风险什么意思 临界风险宝宝问题大吗 临界婚姻全集 临界婚姻哪一集小理被 临界婚姻全集观看 三国之帝临万界 临盘 临盘吧 临高楼盘 海南省临高楼盘 临平新盘 临矿集团 临策线 执策而临之的临 临终 临终囧事 临终歌 山伯临终 南怀瑾临终让人失望