{CMoney战斗营} 的第三周 #内部类别 及 Lambda

心得

  这星期过得有一点迷茫,又有新的工具加入,使用准则短短的就叙述完毕了,困难的是我不知道什麽时候要使用它!不意外的类别可以镶嵌在类别之间而产生了内部类别,方便管理,过去也在一些coding练习的网站中不时有看到Lambda表示式,一直视之为譁众取巧的旁门左道,没想到其实是增加效能的实用方法。原本平舖直叙的程序码经过一连串的物件导向被拆得零零碎碎,随着加强对细节的要求,不断的在一块块的拼图中迷航,增加应付突如期来的变化的扩充性。看着碎裂的程序,我到底写到哪里了呢?要怎麽测试,还少哪一块呢?还在练习适应加入了物件导向的世界...

学习笔记

内部类别

  • 包装在外部类别中的类别
  • 通常只为了在外部类别中使用, 建议将存取等级设为private, 以免再不同类别中交互使用, 管理紊乱
  • 可直接调用外部类别的属性及方法
  • 如果需要在外部类别创建前调用, 则可设定为static
    public class Gambling {
        Dice a;
        Dice b;
        public Gambling(int n){
            a = new Dice(n);
            b = new Dice(n)
        }
        private class Dice {          //内部类别
            int[] dices;           
            public Dice(int n){
                dices = new int[n];
            }
            public int sum(){...}
        }
    }

匿名内部类别

  • 使用介面时, 可能会为了要实作内部的方法而开新的类别, 但并未被重复利用
  • 可以使用匿名内部类别直接实作 (但是系统还是会自动命名产生一个类别)
  • 可以直接使用外部属性或方法, 但是调用的外部属性强迫变成final
  • 在Java 8 加入Lambda 後, 已不建议使用
    public class Gambling {
        ...
        private interface Compare{
            int diff(Dice a, Dice b);
        }
        Compare bigger = new Compare(){     // 匿名内部类别
            @Override
            public int diff(Dice a, Dice b{
                return a.sum() - b.sum();
        }
    }

Lambda

  • 当介面中只有一个抽象方法时, 可以用 lambda 来取代匿名内部类别
  • 因为只有一个抽象方法, 不需要再描述方法的参数/回传资讯, 直接帮参数命名, 然後撰写实作内容即可
        private interface Compare{             //只有一个抽象方法的介面
            int diff(Dice a, Dice b);
        }
        Compare bigger = new Compare(){        //匿名内部类别
            @Override
            public int diff(Dice a, Dice b {
                return a.sum() - b.sum();
            }
        };

        Compare bigger2 = (a,b) -> {a.sum()-b.sum()};  //lambda

<<:  win破解後可以接着使用商业的大量授权吗

>>:  【左京淳的JAVA WEB学习笔记】第三章 登入页面

新新新手阅读 Angular 文件 - Component - ngOnDestroy(2) - Day26

本文内容 接续昨天 ngOnDestroy 还没有记录完的内容。 ngOnDestroy 可能没被启...

actions 就是 Vuex 里「共用的 method」

有时候,需要 CRUD 以外的行为,後端有时会开专属的 API,有时候不会。 有时候在使用 API ...

Day 30 整合宝石:【Lab】建构三层式云端架构 (EC2+VPC+S3+RDS+IAM) (下)

本文将继上篇 【Lab】建构三层式云端架构(上),实作下半部分的内容,包含档案控管、RDS/EC2...

Day05 platform channels

编写自定义的平台相关程序码(插件在不同平台的功能实作) Flutter 允许调用相关平台的API,无...

WordPress 增加热门文章外挂 - WP-PostViews

当 WordPress 的文章流量开始出现的时候,这时候就会想要在侧边栏增加一个热门文章的连结,不止...