关闭 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开发更加简单。敬请关注!

    上一篇返回首页 下一篇

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

    别人在看

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    帝国CMS7.5编辑器上传图片取消宽高的三种方法

    帝国cms如何自动生成缩略图的实现方法

    Windows 12即将到来,将彻底改变人机交互

    帝国CMS 7.5忘记登陆账号密码怎么办?可以phpmyadmin中重置管理员密码

    帝国CMS 7.5 后台编辑器换行,修改回车键br换行为p标签

    Windows 11 版本与 Windows 10比较,新功能一览

    Windows 11激活产品密钥收集及专业版激活方法

    IT头条

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    严重缩水!NVIDIA将推中国特供RTX 5090 DD:只剩24GB显存

    00:17

    无线路由大厂 TP-Link突然大裁员:补偿N+3

    02:39

    Meta 千万美金招募AI高级人才

    00:22

    技术热点

    微软已修复windows 7/windows 8.1媒体中心严重漏洞 用户可下载安

    卸载MySQL数据库,用rpm如何实现

    windows 7中使用网上银行或支付宝支付时总是打不开支付页面

    一致性哈希算法原理设计

    MySQL数字类型中的三种常用种类

    如何解决SQL Server中传入select语句in范围参数

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

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