你好, 2018!Kotlin 现在已经是Android的官方语言。它富有的表现力,简洁,有力。最重要的是,它能与我们现有的Android主要开发语言Java可以运行时互操作。
public interface Collection<out E> : Iterable<E>{...}
在 Kotlin 中 , :: 双冒号操作符 的作用是 获取 类 , 对象 , 函数 , 属性 的 类型对象 引用 ;
虽然 Kotlin 的开发很方便,但当你与他人协作时,总会碰到 Java 与 Kotlin 代码共存的代码项目。 本章就教你如何优雅的实现 Kotlin 与 Java 混合编程。 3.1 直接转换 3.1.1 将 Java 转换为 Kotlin 如果你之前使用 Java 语言而没有 Kotlin 开发经验,不用担心,Intellij IDEA 会帮你一键转换,将 Java 代码转换成 Kotlin 代码(但是反过来就不行了)。 在 Mac 上,系统默认的快捷键为control+shift+command+
本章内容包括: 应用和定义注解 在运行时使用反射对类进行自省 一个真正的 Kotlin 项目实例 10.1 声明并应用注解 /**-------------------------10.1.1 应用注解-------------------------*/ @Deprecated("Use removeAt(index) instead.", ReplaceWith("removeAt(index)")) fun remove(index: Int)
Java中的反射机制,使得我们可以在运行期获取Java类的字节码文件中的构造函数,成员变量,成员函数等信息。这一特性使得反射机制被常常用在框架中,想要比较系统的了解Kotlin中的反射,先从Java的反射说起。
一般activity创建之后会有两个文件,一个是实现逻辑的kotlin文件或者java文件,一个表示当前activity对应的xml布局文件,用来展示界面
Kotlin 基于 Java 6,因此 Kotlin 天生支持泛型。但是 Kotlin 的泛型有自己的特点。
这一节将会展示 Kotlin 标准库中用来处理集合的一些方法。另外也会涉及几个相关的语法特性:
Kotlin是一种针对Java 平台的新编程语言。Kotlin简洁、安全、务实,并且专注于与Java代码的互操作性。它几乎可以用在现在Java使用的任何地方:服务端开发、Android应用等等。Kotlin 可以很好地和所有现存的Java库和框架一起工作,而且性能和Java旗鼓相当。
之前就写过一篇泛型的文章,但是总觉得写得不够系统,所以最近对泛型又作了些研究,算是对这篇文章的补充了。
在 Java 语言 中 , 任何 引用类型变量 都可以为 空 null ; Java 中 八种 基本数据类型 变量 的 默认值 为 0 或 false ;
这一节为Kotlin反射,主要是在Kotlin中时用Java-Api来实现反射,使用Kotlin本身支持的反射API进行反射。还有2者的对比。要是对Java的反射不是很熟悉,可以花几分钟的时间先去网上找些Java反射的文章。关于Java的反射并不是这节的主要内,同时反射中也涉及到泛型的知识。其实有很多反射的地方关于泛型我也不敢说完全明白,也在代码中加了很多TODO,希望以后慢慢能熟能生巧,慢慢理解。
通过反射获取ContentView注解,并最终调用Activity的setContentView方法
雪花算法生成的主键传到前段后发生精度丢失,例如后端传入1397844263642378242,前端接收后变成1397844263642378000
Kotlin 跟 Java 可以无缝衔接,因此 Kotlin 能够使用 Java 的反射机制。另外,Kotlin 也有自己的反射机制,需要额外地引入 kotlin-reflect.jar。
静态代理: 由我们开发者自己手动创建或者在程序运行前就已经存在的代理类,静态代理通常只代理一个类,动态代理是代理一个接口下的多个实现类。
我们可以直接使用 "= " 对Java属性进行赋值了,对于受保护的属性,Java类需要实现对应的get、set方法 Java:
反射(Reflection)是在运行时获取类的函数(方法)、属性、父类、接口、注解元数据、泛型信息等类的内部信息的机制。这些信息我们称之为 RTTI(Run-Time Type Information,运行时类型信息) 。
状态机是古老的计算机理论,在游戏开发、嵌入式开发、网络协议等领域,得到广泛地使用。
为了解决Android-App开发以来一直存在的架构设计混乱的问题,谷歌推出了Jetpack-MVVM的全家桶解决方案。作为整个解决方案的核心-LiveData,以其生命周期安全,内存安全等优点,甚至有逐步取代EventBus,RxJava作为Android端状态分发组件的趋势。
本章总结 : 使用了 泛型 out 协变 和 泛型 in 逆变 极大的提高了程序的扩展性 ;
0. 引子 Kotlin 100% 与 Java 兼容,所以抛开语言表面上面的种种特质之外,背后的语言逻辑或者说“灵魂”与 Java 总是想通的。本文只涉及 Kotlin Jvm,Kotlin Js、Kotlin Native 的具体实现可能有差异。 最近一段时间在网上发了一套 Kotlin 的入门视频,涵盖了基础语法、面向对象、高阶函数、DSL、协程等比较有特色的知识点,不过有朋友提出了疑问:这门课为什么不专门讲讲泛型、反射和注解呢? 我最早听到这个问题的时候,反应比较懵逼,因为我居然没有感觉到 Kotl
当我们打印查看是哪种类型的时候,如果单纯是打印int值,并不能足够解释业务信息,所以,为了更好的输出信息,我们通常会这样做
上一篇介绍了 ardf(android rapid development framework,Android 快速开发框架) 基于 DataBinding 对 RecyclerView 的封装实现和使用,ardf目的是封装一系列 Android 开发框架帮助开发者快速开发提高开发效率。本篇是 ardf的第二篇,将介绍基于 DataBinding + Koin 实现的 MVVM 模式页面快速开发框架的使用和详细实现。
The root of the Kotlin class hierarchy. Every Kotlin class has Any as a superclass.
SAF-Kotlin-log 是一个Android的日志框架,这几天我抽空重新更新了一下代码。
陆陆续续几篇文章已经讲解了项目中 Kotlin 如何配置、简单语法、DataBinding 配置,接下来就要说到 Kotlin 中的 Dagger2 了。
大名鼎鼎的 ButterKnife 库相信很多 android 开发者都听过,在 Github 上star的数目已经快15k了,而且很多知名的app都在使用。
最近在写 maven 插件,涉及到了 java 代码解析这块内容。需要解析 java 源码,然后对于类中的不同部分进行处理。发现手写还是很难的,找了一圈发现了两个不错的工具可以使用,一个是 javaparser[1],另一个是 qdox[2] 。个人感觉 javaparser 强大一些,更新与维护也比较勤,但是相对来说上手难一点,从他的使用文档独立成书在买,可见一斑,而 qdox 比较小巧,上手很快,功能也满足大部分需求,最终还是选择了 qdox。
Anko (https://github.com/Kotlin/anko) 是一个用 Kotlin 写的Android DSL (Domain-Specific Language)。长久以来,Android视图都是用 XML 来完成布局的。这些 XML可重用性比较差。同时在运行的时候,XML 要转换成 Java 表述,这在一定程度上占用了 CPU 和耗费了电量。
本文将深入探讨 Kotlin 中内联函数和 Reified 类型参数的工作原理,并提供详细的示例以帮助读者更好地理解这两个高级功能。我们还会探讨 reified 为什么能够在运行时实现类型检测,并分析内联与reified的注意点和潜在缺点。
本文将向大家介绍一个代码结构检查的神器 - - ArchUnit。在正式介绍ArchUnit之前,先请大家思考一下:
IT派 - {技术青年圈} 持续关注互联网、区块链、人工智能领域 在使用Kotlin进行了一段时间的Android开发之后,我深深地体验到了它的美好,Kotlin 取代 Java 只是时间问题,觉得
volatile关键字在Java多线程编程编程中起的作用是很大的,合理使用可以减少很多的线程安全问题。但其实可以发现使用这个关键字的开发者其实很少,包括我自己。遇到同步问题,首先想到的一定是加锁,也就是synchronize关键字,暴力锁解决一切多线程疑难杂症。但,锁的代价是很高的。线程阻塞、系统线程调度这些问题,都会造成很严重的性能影响。如果在一些合适的场景,使用volatile,既保证了线程安全,又极大地提高了性能。
如从路径/usr/perl查询perl文件,但不查询路径为”/usr/bin/perl”下的perl文件。
为了提高文章质量,本人决定周三22.30(周六早10.30)定时推送技术相关文章,对于方案相关的文章将不在其他渠道发出,只在公众号首发,喜欢的朋友一定要记得哦!
又到了周三 到定时推文的时候,支付宝风波虽刚过,但留下的却是值得我们思考的,为何这么产品的微小举动就能带动两三亿人的关注?说明产品拿捏客户需求的重要性,平台的重要性,也说明以信用分750+的饥饿营销并没有让大家觉得厌恶,反而更加去追捧,验证了陈奕迅的歌词,”得不得到的永远在骚动“!
关于Kotlin相关记录,如果有意查看我的github,其超10w字(其中8w是代码吗,哈哈)。。
Kotlin号称是Android版本的swift,距离它1.0正式版本的推出快一年了。它像swift一样,可以写客户端也可以写服务端。由于公司项目比较繁忙,我一直没有时间关注和更进它,只是偶尔花点时间看一下它的语法。
背景介绍 作者是 Allegro 的一名技术人员。Allegro 拥有超过 50 个开发团队。可以自由选择 他们的 PaaS 所支持的技术。他们主要使用 Java、Kotlin、Python 和 Golang 进行编码。本文中提出的观点来自作者的经验。 Kotlin 很流行,Kotlin 很时髦。Kotlin 为你提供了编译时 null-safety 和更少的 boilerplate。当然,它比 Java 更好,你应该切换到 Kotlin。等等,或者你不应该如此?在开始使用 Kotlin 编写之前,请阅
改不完的 Bug,写不完的矫情。公众号 杨正友 现在专注移动基础平台开发 ,涵盖音视频, APM和信息安全等各个知识领域;只做全网最 Geek 的公众号,欢迎您的关注!精彩内容不容错过~ 一. kotlin 简介 Kotlin 拥有强大的生态,因为 Kotlin 是一门跑在 Java 虚拟机上的函数式语言,完全符合 JVM 的设计规范,如: 类型擦除,装箱和拆箱等等。所以也可以像 Java 一样支持 Android 原生环境开发,服务端,甚至大前端方向。那么 Kotlin 和 Java 有什么共同点
毫无疑问,Kotlin 目前很受欢迎,业界甚至有人认为其将取代 Java 的霸主地位。它提供了 Null 安全性,从这一点来说它确实比 Java 更好。那么是不是这就意味着开发者应该毫不犹豫地拥抱 Kotlin,否则就落伍了?
本系列适合完全没有学过Kotlin并且像快速入门的同学,本人现在也是在学习中,所以作为笔记难免会有错误,如果我理解的不对或是有疑问,真诚希望可以在留言区大家进行讨论。
我们在《第2章 Kotlin 语法基础》中已经学习过关于运算符的相关内容,本章将继续深入探讨Kotlin中的运算符的重载与约定。
在前面的章节中,我们已经学习了Kotlin的基础语法、类型系统、泛型与集合类、面向对象与函数式编程等主题,在上一章中我们还看到了Kotlin提供的轻量级并发编程模型:协程的相关内容。
Kotlin学习之高阶函数和Lambda表达式:闭包 一、闭包 闭包指Lambda表达式和匿名函数外部定义的局部变量,Kotlin支持Lambda表达式和匿名函数访问和修改闭包。 如果一个函数对外部数据没有任何影响,这样的函数是“纯函数”。很多数学函数都是纯函数,比如常见的加减乘除,都只与传入的参数有关,不影响任何外部数据;有些函数则会影响外部数据,比如集合的add()方法,会改变函数外部的集合数据,所以add()不是一个“纯函数”。 Kotlin支持Lambda表达式和匿名函数访问和修改闭包,意味着K
一个注解允许你把额外的元数据关联到一个声明上。然后元数据就可以被相关的源代码工具访问,通过编译好的类文件或是在运行时,取决于这个注解是如何配置的。 --《Kotlin in Action》
领取专属 10元无门槛券
手把手带您无忧上云