对 Kotlin 的使用使得 Cash App 团队可以清除诸多构建器,从而减少了他们需要编写的代码量。在某些情况下,代码量被减少了 25% 之多。

举个例子,下面的代码是一个 Task 对象分别使用构建器及默认参数的实现方式。该 Task 唯一的必需参数是任务名 (name):

/* Copyright 2020 Google LLC.

SPDX-License-Identifier: Apache-2.0 */

3

  • public class Task {

  • private final String name;
    
  • private final Date deadline;
    
  • private final TaskPriority priority;
    
  • private final boolean completed;
    
  • private Task(String name, Date deadline, TaskPriority priority, boolean completed) {
    
  •     this.name = name;
    
  •     this.deadline = deadline;
    
  •     this.priority = priority;
    
  •     this.completed = completed;
    
  • }
    
  • public static class Builder {
    
  •     private final String name;
    
  •     private Date deadline;
    
  •     private TaskPriority priority;
    
  •     private boolean completed;
    
  •     public Builder(String name) {
    
  •         this.name = name;
    
  •     }
    
  •     public Builder setDeadline(Date deadline) {
    
  •         this.deadline = deadline;
    
  •     return this;
    
  •     }
    
  •     public Builder setPriority(TaskPriority priority) {
    
  •         this.priority = priority;
    
  •         return this;
    
  •     }
    
  •     public Builder setCompleted(boolean completed) {
    
  •         this.completed = completed;
    
  •         return this;
    
  •     }
    
  •     public Task build() {
    
  •         return new Task(name, deadline, priority, completed);
    
  •     }
    
  • }
    

-}

  • data class Task(

  • val name: String,
    
  • val deadline: Date = DEFAULT_DEADLINE,
    
  • val priority: TaskPriority = TaskPriority.LOW,
    
  • val completed: Boolean = false
    

+)

复制代码

您可以通过我们的这篇 Kotlin Vocabulary | Kotlin 默认参数 了解有关默认参数的更多信息。

object 关键字与单例


单例模式 大概是软件开发者最常用的设计模式之一,它可以帮助我们创建一个对象的单个实例,而其他对象可以访问和共享该实例。

创建单例时,您需要控制对象是如何被创建的,保证只存在一个实例并确保代码的线程安全。而在 Kotlin 中,您只需使用一个关键字: object

/* Copyright 2020 Google LLC.

SPDX-License-Identifier: Apache-2.0 */

  • public class Singleton{

  • private static volatile Singleton INSTANCE;

  • private Singleton(){}

  • public static Singleton getInstance(){

  •    if (INSTANCE == null) {                // Single Checked
    
  •        synchronized (Singleton.class) {
    
  •            if (INSTANCE == null) {        // Double checked
    
  •                INSTANCE = new Singleton();
    
  •            }
    
  •        }
    
  •    }
    
  •    return INSTANCE;
    
  • }

  • private int count = 0;

  • public int count(){ return count++; }

  • }

  • object Singleton {

  • private var count = 0
    
  • fun count(): Int {
    
  •     return count++
    
  • }
    
  • }

复制代码

操作符、字符串模板及更多
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

尾声

你不踏出去一步,永远不知道自己潜力有多大,千万别被这个社会套在我们身上的枷锁给捆住了,30岁我不怕,35岁我一样不怕,去做自己想做的事,为自己拼一把吧!不试试怎么知道你不行呢?

改变人生,没有什么捷径可言,这条路需要自己亲自去走一走,只有深入思考,不断反思总结,保持学习的热情,一步一步构建自己完整的知识体系,才是最终的制胜之道,也是程序员应该承担的使命。

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)**

[外链图片转存中…(img-OygIq5BD-1711940793527)]

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐