关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 安卓开发 »Kotlin-for-Android : 让你的Android代码更简洁

    Kotlin-for-Android : 让你的Android代码更简洁

    2015-04-02 00:00:00 出处:IT_xiao小巫
    分享
    Kotlin是众多基于JVM的语言之一,它一开始是作为android 开发中java语言的可能的代替者出现的。java是世界上使用最多的语言之一,而伴随着其他语言的发展使得程序员编程越来越容易,但是java并没有尽快地向预期目标发展。

    Kotlin简介

    Kotlin是JetBrains创造的基于JVM的语言,JetBrains是IntelliJ的缔造团队。
    Kotlin是一个拥有很多函数编程特点的面向对象的编程语言。

    为什么要用Kotlin

    我首先声明我并没有使用Kotlin很长时间,我几乎是在学习的同时写了这些文章的。我并没有尝试任何其它的替 代语言,例如Go和Scala,所以假如你是真的考虑换一种开发语言的话,我建议你去搜索一下其他人对这些 语言的评价。

    以下是我选择学习Kotlin的原因:

    学习曲线相对较快:以Scala作为例子进行比较,我们是向着更简单的方向前进。Kotlin有更多的限制,但是假如你没有学习过一门现代编程语言的话,Kotlin更容易学习。 轻量级:与其他语言相比Kotlin的核心库更小。这很重要,因为android函数数量限制(函数数量不能大于64k)是一个问题,虽
    然有一些选择来解决这个问题,例如proguard 或 multidexing,但是这些解决方案会加复杂度,并导
    致调试时花费更多的时间。引入Kotlin核心库添加了不到7000个方法,大致和support-v4一样。 高交互性:Kotlin和其它java库协调使用的特别好,并且交互操作很简单。这是Kotlin团队
    在开发新语言是的主要理念之一。他们想在使用Kotlin开发时并不用重写之前所有用java写的代码,所以,Kotlin和java交互的能力必须非常高。 与AS和Gradle完美结合:我们有一个IDE的插件和另一个属于Grade的插件,因此,用Kotlin进行
    android编程并不困难。

    在开始任何争论之前我建议你看一下Jake Wharton写的一个有趣的文档the use of Kotlin for Android development。

    Kotlin的优点

    1. 可读性更高,更简洁

    使用Kotlin,可以更容易的避免创建模版型代码,因为大多数经典的情景都默认包含在Kotlin中。
    例如,在java中,我们想要创建一个典型的data class时需要这样做:

        public class Artist {
        private long id;
        private String name;
        private String url;
        private String mbid;
    
        public long getId() {
            return id;
        }
    
        public void setId(long id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getUrl() {
            return url;
        }
    
        public void setUrl(String url) {
            this.url = url;
        }
    
        public String getMbid() {
            return mbid;
        }
    
        public void setMbid(String mbid) {
            this.mbid = mbid;
        }
    
        @Override public String toString() {
            return "Artist{" +
                    "id=" + id +
                    ", name='" + name + '/'' +
                    ", url='" + url + '/'' +
                    ", mbid='" + mbid + '/'' +
                    '}';
        }
    }

    那么在Kotlin需要多少代码呢?仅仅是下面这个简单的数据类:

        data class Artist(
        var id: Long, 
        var name: String, 
        var url: String, 
        var mbid: String)

    2. 空指针安全

    当我们用java开发时,我们的大多数代码是要进行类型检查的,假如我们不想出现**unexpected
    NullPointerException**的话,我们就要在运行代码之前持续的检查是否有对象为null。Kotlin,和其它语
    言一样,是空指针安全的,因为我们可以通过安全的调用操作来准确的声明一个object可以为null。

    我们可以这样做:

        //This won′t compile. Artist can′t be null
        var notNullArtist: Artist = null
    
        //Artist can be null
        var artist: Artist  = null
    
        // Won′t compile, artist could be null and we need to deal with that
        artist.print()
    
        // Will print only if artist != null
        artist .print()
    
        // Smart cast. We don′t need to use safe call operator if we previously checked     nullity
        if (artist != null) {
            artist.print()
        }
    
        // Only use it when we are sure it′s not null. Will throw an exception otherwise.
        artist!!.print()
    
        // Use Elvis operator to give an alternative in case the object is null
        val name = artist .name  : "empty"

    3. 扩展方法

    我们可以给任何类添加新方法。这比我们在project中使用的工具类可读性更高。例如:我们可以给Fragment添加一个新方法来显示Toast。

    fun Fragment.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT) {
        Toast.makeText(getActivity(), message, duration).show()
    }

    我们可以这样使用:

        fragment.toast("Hello world!")

    4. 支持函数式编程

    假如我们可以不用在我们需要的时候每一次都创建一个listener,就像创建一个click listener那样的操作,
    而是仅仅定义我们想要做什么?这种想法的确可以实现,它的实现得益于**lambda**d的使用:

        view.setOnClickListener({ toast("Hello world!") })

    Kotlin目前存在的限制

    Kotlin 依旧在发展,虽然它相对稳定,并且final release版本就很快发布,但是Kotlin在进行android相关开发的时候还是有些限制的。

    交互性与自动代码生成:一些有名的android Libraries,例如Dagger 或 Butterknife,他们依赖于自动
    代码生成,这种情况下假如有名字冲突的话将无法进行代码生成。Kotlin正在解决这个问题,所以这个问题也许
    会很快解决。无论如何,我将在接下来的文章里阐明,Kotlin语言的表达能力会让我们觉得不再需要那么多的
    Libraries。 声明自定义view比较困难:Kotlin类只能声明一个构造函数,然而自定义View通常需要三个。假如我
    们使用代码来创建View的话可以避免这个问题,但对于使用XML文件来声明View的话就不能满足需求了。最容易的变通方式是用java来声明这些
    自定义View的实现类,然后通过Kotlin来使用它们。Kotlin团队许诺将在M11 release解决这个问题。
    Update: Kotlin M11 is out and now includes secondary constructors android 下Junit测试:AS 1.1中介绍的新特性并不适用与Kotlin。顺便说说,系统测试和Junit 测试对于纯Kotlin项目是完全可用。

    结论

    对于android apps 开发,Kotlin是一个非常有趣的java替代者。下一篇文章将会描述如何用Kotlin新建一
    个project,和如何更好的适用Kotlin来使得android开发更加简单。敬请关注!

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    Destoon 模板存放规则及语法参考

    Destoon系统常量与变量

    Destoon系统目录文件结构说明

    Destoon 系统安装指南

    Destoon会员公司主页模板风格添加方法

    Destoon 二次开发入门

    Microsoft 将于 2026 年 10 月终止对 Windows 11 SE 的支持

    Windows 11 存储感知如何设置?了解Windows 11 存储感知开启的好处

    Windows 11 24H2 更新灾难:系统升级了,SSD固态盘不见了...

    小米路由器买哪款?Miwifi热门路由器型号对比分析

    IT头条

    Synology 对 Office 套件进行重大 AI 更新,增强私有云的生产力和安全性

    01:43

    StorONE 的高效平台将 Storage Guardian 数据中心占用空间减少 80%

    11:03

    年赚千亿的印度能源巨头Nayara 云服务瘫痪,被微软卡了一下脖子

    12:54

    国产6nm GPU新突破!砺算科技官宣:自研TrueGPU架构7月26日发布

    01:57

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    技术热点

    如何删除自带的不常用应用为windows 7减负

    MySQL中多表删除方法

    改进的二值图像像素标记算法及程序实现

    windows 7 32位系统下手动修改磁盘属性例如M盘修改为F盘

    windows 7中怎么样在家庭组互传文件

    Linux应用集成MySQL数据库访问技巧

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。