Kotlin中国 为您找到相关结果 97

Kotlin之 TODO,also,apply,run,with,let,takeIf,takeUnless高阶函数区别

1. TODO 方法使用: fun test(){ TODO("请关注我。") } 方法说明:类似于java的//todo,不同的是,它会抛出一个异常,也就是这个方法会导致程序崩溃。 它的好处是:配合IDE自动声明的TODO, 会强制开发者去实现这个TODO或者删除它。 2.also textView?.also { it.text = "" it.textSize = 16f it.setTextColor(Color.WHITE) }?.visibility = View.VISIBLE 方法说明:函数块范围内,可以通过 it 指代该对象,任意调用该对象的方法,返回值为该对象自己 3. apply textView.apply{ this.textSize = 13f this.text...阅读全文

博文 2017-07-12 17:02:21 秀宇

android退出应用销毁所有的activity

文章原文:点击打开链接 Activity是存放在栈中。在默认的情况下(standard)Activity在栈中是以先进后出、后进先出的方式进行存放。最开始出现的Activity会存在栈底,最新启动的Activity总是会存在栈顶。当我们开启的Activity越来越多,当前想在某个界面退出当前应用程序的时候,或者双击返回键退出当前应用程序。这个时候只能一个一个的把当前所有启动的Activity销毁,直到清空栈中的所有Activity,应用程序才能退出。 销毁所有Activity,退出应用程序常见的方式有下面四种: (1) System.exit(0) 使用系统的方法,强制退出 (2) 抛出异常,强制退出 (3) 使用Application退出 (4) 使用广播退出 第一种方式 System.e...阅读全文

博文 2017-10-28 23:01:36 huangtenggg

Android下zip压缩文件加密解密的完美解决方案

前言 参考博客: http://blog.csdn.net/zhangyihui1986/article/details/7724229 http://blog.csdn.net/zhangyihui1986/article/details/7724616 ZIP4J,作为解决了我的问题的终极解决方案,本来一开始在搜索引擎上就看到了它的踪迹,但因天朝的网络环境问题,zip4j的官网一直无法访问,最终使我多走了好多冤枉路,期间试过JDK的zip包,试过Apache的zip解决方案,也试过如winzipaes等其它的开源框架,最终没有满足自己的需求,最后,我不得已挂了一下代理将zip4j下载了下来,试用了一下,果然威力无比,所到之处所向披靡... 闲话少说,如果需要可以到zip4j的官网下载该开...阅读全文

博文 2017-09-28 15:02:53 恒源祥

Android7.0 WebView问题

之前的项目用到webview显示正常,当手机升级为7.0以后显示空白页,或者直接ANR界面渲染异常 显示成空白页可能是加载https遇到证书问题,解决方法 webview设置WebViewClient的时候,重写onReceivedSslError这个方法 那当WebView渲染异常就抛出了这个 我在stackoverflow上找到了解决方法,说可能是WebView在7.0上是一个bug吧,解决方式主要是让硬件加速。 1、webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 2、android:hardwareAccelerated="false...阅读全文

博文 2017-06-20 12:02:56 小鸥

Kotlin学习笔记-基础语法

去年学习过一遍Kotlin,相比java而言,Kotlin确实有许多方便的地方,但是学习之后一直没有真正拿来写项目,很久不用很多东西都已经忘记了。最近Google宣布Kotlin成为Android开发的官方语言之后,Kotlin突然变得火热起来,我也打算复习一遍Kotlin的语法(主要是和java不同的地方)并用笔记记录下来。 基本数据类型数值类型 Type Byte Short Int Long Float Double Bit Width 8 16 32 64 32 64 字面常量 十进制:123长整型以大写的 L 结尾:123L16 进制以 0x 开头:0x0F2 进制以 0b 开头:0b00001011注意:8进制不支持Kotlin 同时也支持传统符号表示的浮点数值:Doubles ...阅读全文

博文 2017-06-05 23:02:15 Wang_Yi

kotlin-null判断总结

参考 https://mp.weixin.qq.com/s/VkJHHfhU8T8fz5sY9Rpyyw看了kotlin对null的处理之后,分分钟想甩掉java啊! 可空类型与非空类型 Kotlin 的类型系统旨在消除来自代码空引用的危险,许多编程语言(包括 Java)中最常见的陷阱之一是访问空引用的成员,导致空引用异常。在 Java 中, 就是我们熟悉的 NullPointerException ,或简称 NPE。 要知道,在大多数项目的 crash 中,NPE 比率占到了半数以上,毫不夸张。 但是,Kotlin 的类型系统也只能说尽可能避免 NullPointerException,并不是使用 Kotlin 就再也没有 NPE。如果使用 Kotlin 时存在 NPE,可能的原因是: 1...阅读全文

博文 2017-06-02 10:02:26 洋__

kotlin使用com.alibaba.fastjson.JSONException: default constructor not found

使用kotlin,在用fastjson来解析json数据时,出现这个错误 目前fastjson最新版本是1.1.62,不过还不稳定,出现这个问题建议使用1.1.61 github地址:https://github.com/ttarfall/fastjson 目前这个错误在使用kotlin的data数据类和普通数据类都会有,解决方法: 使用1.1.61稳定版 无使用 普通数据类 并且像这样多增加一个空构造器 class UserInfo{ constructor() constructor(email: String, id: String, name: String) } 期待官网能尽快更新这个问题 那下边我们来源码分析一下出现这个错误的原因:(这里主要比较的1.1.61和1.1.62) 由...阅读全文

博文 2017-09-14 21:01:09 qq_24641847

kotlin.NotImplementedError: An operation is not implemented: not implemented

初次接触Kotlin,在很多方法的调用上不是很熟悉,该问题是一个很基本的问题, 产生原因: 1. TODO 方法声明: @kotlin.internal.InlineOnly public inline fun TODO(): Nothing = throw NotImplementedError() 方法使用: fun test(){ TODO("Not implemented") } 方法说明:有点类似于java的//todo,但是不同的是,因为它的方法告诉我们,它会抛出一个异常,也就是上面这个方法会导致程序崩溃。它的好处是:配合IDE自动声明的TODO, 会强制开发者去实现这个TODO或者删除它。 我出该异常时的代码:在给EditText添加一个addTextChangedListen...阅读全文

博文 2017-08-15 07:01:01 LMH820822

集合和函数操作符 for kotlin

虽然我们可以直接用Java中的集合,但是Kotlin也提供了一些你希望用的本地的接 口: Iterable:父类。所有我们可以遍历一系列的都是实现这个接口。 MutableIterable:一个支持遍历的同时可以执行删除的Iterables。 Collection:这个类相是一个范性集合。我们通过函数访问可以返回集合的size、是否为空、是否包含一个或者一些item。这个集合的所有方法提供查询,因为connections是不可修改的。 MutableCollection:一个支持增加和删除item的Collection。它提供了额外的函数,比如 add 、 remove 、 clear 等等。 List:可能是最流行的集合类型。它是一个范性有序的集合。因为它的有序,我们可以使用 get 函数...阅读全文

博文 2017-07-03 18:02:20 geek_loser

浅析JVM(一)内存模型

JVM 是 Java Virtual Machine(Java虚拟机)的缩写,它是一种规范,HotSpot VM是其最主流的实现(其他实现),通常我们讨论JVM如果没有特意说明是何种实现,便指的是HotSpot VM。JVM也并非仅支持Java语言,任何可编译为字节码的编程语言能可以运行在JVM上,例如前不久谷歌在 I/O 2017宣布将作为 Android 开发 First-Class 语言的 Kotlin。熟知JVM内存模型,不但有助于我们进一步的理解JVM,同时也对Java并发编程的理解有莫大帮助,希望本文能使你对JVM内存模型有一个简单的认识。 JVM 结构示意图 程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,它的作用可以看做是当前线...阅读全文

博文 2017-05-31 19:02:11 简单的土豆

Kotlin Koans学习笔记(2)

这是Kotlin Koans学习笔记的第二部分,上一篇在这里。 第二部分一共12个任务,都是关于Kotlin集合操作。 13.Introduction Kotlin提供了一系列的to方法将一个集合类型转换成另外一个集合类型。 这一部分的第一个任务很简单,根据提示就可以完成,关于任务就不必多说。 先说明一下第二部分所有任务的数据模型。这一部分所有的任务都是围绕一个商店(Shop)展开,商店有一个客户(Customer)列表。 客户具有姓名、城市和订单(Order)列表三个属性。 订单具有商品(Product)列表和是否已经发货两个属性。 商品具有名称和价格两个属性。 data class Shop(val name: String, val customers: List)...阅读全文

博文 2017-05-23 14:30:20 唐先僧

Android RxJava2 浅析

文地址:http://blog.csdn.net/maplejaw_/article/details/52442065 Observable 在RxJava1.x中,最熟悉的莫过于Observable这个类了,笔者刚使用RxJava2.x时,创建一个Observable后,顿时是懵逼的。因为我们熟悉的Subscriber居然没影了,取而代之的是ObservableEmitter,俗称发射器。此外,由于没有了Subscriber的踪影,我们创建观察者时需使用Observer。而Observer也不是我们熟悉的那个Observer,其回调的Disposable参数更是让人摸不到头脑。 废话不多说,从会用开始,还记得使用RxJava的三部曲吗? 第一步:初始化一个Observable Observ...阅读全文

博文 2018-01-10 16:00:47 zhujiabin

Kotlin 标准库扩展函数

Kotlin 标准库提供了一些扩展 Java 库的函数。 apply apply 是 Any 的扩展函数, 因而所有类型都能调用。apply 接受一个lambda表达式作为参数,并在apply调用时立即执行,apply返回原来的对象。apply 主要作用是将多个初始化代码链式操作,提高代码可读性。如: val task = Runnable { println("Running") } Thread(task).apply { setDaemon(true) }.start() 上面代码相对于 val task = Runnable { println("Running") } val thread = Thread(task) thread.setDaemon(true) thread.s...阅读全文

博文 2017-06-01 16:03:12 jinkui

学习的步伐(二)Kotlin 实现Recyclerview列表

一日之计在于晨,来一发! 学习的步伐(三)Kotlin TabLayout+Viewpager+Fragment实现基础框架 概述 本文主要kotlin实现一个recyclerview列表,item的点击事件。 demo早就写好了,但是时间久了还是会忘的。还是要经常复习的,不是有个记忆曲线吗,所以本文是我复习用的,俗话说好记性不如烂笔头吗! 配置 app的build.gradle apply plugin: 'kotlin-android' apply plugin:'kotlin-android-extensions' apply plugin: 'android-apt' compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_v...阅读全文

博文 2017-06-30 22:01:22 qq_34501274

Kotlin 笔记(二)集合和函数操作符

总数操作符 val listIntTotal = listOf(1, 2, 3, 4, 5, 6) val listStrTotal = listOf("yes", "no", "sure") fun main(args: Array) { //1.any 如果至少有一个元素符合给出的判断条件,则返回true println(listIntTotal.any { it % 2 == 0 })//true println("--------------any1 -------------------------------") println(listIntTotal.any { it > 10 })//false println("--------------any2 ---...阅读全文

博文 2017-06-16 18:02:18 urwater

kotlin类型 非空 和空类型的处理

/** * Created by gacmy on 2017/6/15. */ fun strLen(s:String) = s.length//会产生编译错误 空指针异常 //fun strLenSafe(s: String?) = s.length // 类型后面加? 表明它可以为空值 但是你不能直接调用它的方法 否则会报错 fun strLenSafe(s: String?):Int{//你必须判空 if(s == null){ return 0 } s?.toUpperCase()//等同于下面的语句 类调的实例调用方法 加上? 则不是空则正常调用 是空值则返回空 if(s!=null) s.toUpperCase() else null return s.length } fun ...阅读全文

博文 2017-06-21 13:01:02 gacmy

Kotlin编码窍门之类型检查与类型转换(Type Checks and Casts)

is和!is操作符 我们可以通过is操作符和!is操作符来检查一个对象是否是目标类型: if (obj is String) { print(obj.length) } if (obj !is String) { // same as !(obj is String) print("Not a String") } else { print(obj.length) } 职能转换(Smart Casts) 许多情况下,Kotlin是不用使用强制类型转换操作的,因为编译器会跟踪不可变值的is检查操作,并会在需要的时候自动插入(安全的)类型转换操作: fun demo(x: Any) { if (x is String) { print(x.length) // x is automaticall...阅读全文

博文 2017-06-03 11:02:11 谁耳

Android事件分发理解

Android事件分发机制是个难点和重点,结合下各家,写点自己的理解。。 首先抛出一个小问题,写一个button的点击事件 [java] view plain copy button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.d("TAG", "onClick execute"); 再写一个button的touch事件 [java] view plain copy button.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEve...阅读全文

博文 2017-07-22 00:00:33 lyfshare

王垠关于语言的理解

文章:Kotlin 和 Checked Exception 这篇文章讲了,为什么java的方法会要求你在定义时,写可能抛出的异常,像下面这样。 void foo(string filename) throws FileNotFoundException { if (...) { throw new FileNotFoundException(); } ... } 因为这样有利于查到错误。 C#把可能出的异常写在了注释中。 文章:C# 的 IDisposable 接口 这篇文章讲了,之所以要释放文件,是因为文件相当于是计算机的全局资源,你不释放,别人就无法使用。 文章:给Java说句公道话 说了java是个很稳当的语言...阅读全文

博文 2017-11-29 00:00:17 Tpf386

kotlin源码分析-标准内置函数

1. TODO 方法声明: @kotlin.internal.InlineOnly public inline fun TODO(): Nothing = throw NotImplementedError() 方法使用: fun test(){ TODO("Not implemented") } 方法说明:有点类似于java的//todo,但是不同的是,因为它的方法告诉我们,它会抛出一个异常,也就是上面这个方法会导致程序崩溃。它的好处是:配合IDE自动声明的TODO, 会强制开发者去实现这个TODO或者删除它。 2.also 方法声明: @kotlin.internal.InlineOnly @SinceKotlin("1.1") public inline fun T.also(...阅读全文

博文 2017-06-30 22:01:14 ncuboy045wsq

Kotlin笔记 类型检查和转型

is and !is 操作符 is和!is可以用来检查一个实例是否属于一种类型 if (obj is String) { print(obj.length) } if (obj !is String) { // same as !(obj is String) print("Not a String") } else { print(obj.length) } Kotlin里经过is检查的变量不用显示的转型(自动转换) fun demo(x: Any) { if (x is String) { print(x.length) // x is automatically cast to String } } 或者 if (x !is String) return print(x.length)...阅读全文

博文 2017-05-27 15:25:58 yangweigbh

Kotlin 遇到 JSONException

Kotlion 的数据类方便我们定义、使用,减少重复的 getter/setter: data class User(val name: String, val age: Int) 当使用 fastjson 解析 JSON 数据时,常配合 POJO 来解析,用法参考:Samples DataBind; 但 fastjson 配合 POJO 解析时,需要 POJO 包含一个无参的构造器,否则抛出错误: com.alibaba.fastjson.JSONException: default constructor not found. Kotlin 与 fastjson 配合使用时,需要我们为 data class 生成无参的构造函数,即所有的属性必须指定默认值: data class User...阅读全文

博文 2017-07-17 15:03:59 Junzz丶

kotlin空安全

可空类型与非空类型 在 Kotlin 中,类型分为可空引用和非空引用。例如,String 类型的常规变量不能容纳 null : var a: String = "abc" a = null // 如果这样写,就会提示错误,要是在java中运行时才会错误 当然可以声明变量为可空变量,用 String? var a: String? = "abc" a = null //此时就不会提示错误了 现在,如果你调用 a 的方法或者访问它的属性val l = a.length 安全的调用 安全调用操作符?.a?.length如果 a 非空,返回 a.length ,否则返回 null ,这个表达式的类型是Int? 。如果要只对非空值执行某个操作,安全调用操作符可以与 let 一起使用: val list...阅读全文

博文 2017-06-21 18:04:09 李庆雪

Kotlin空类型安全(Null Safety)

Kotlin——空类型安全(Null Safety) 本篇文章主要是翻译自Kotlin官方文档的Null Safety章节,同时加入自己的一些理解和思考。 可空类型(Nullable types)和非空类型(Non-Null Types) Kotlin语言的类型系统旨在从代码层面来消除空引用的危险。空引用亦被称为Billion Dollar Mistake(十亿美金错误)。   在包括Java在内很多编程语言中,一个最常见的缺陷就是:使用一个空引用成员,导致空引用异常。在Java语言中,这个空引用异常就等价于NullPointerException(简写为NPE); 如上所述,Kotlin语言的类型系统就是为了从代码层面来消除空指针异常(NullPointException)的。唯一可能引起...阅读全文

博文 2017-05-27 15:17:01 顶级工程师闯天涯

[Android]如何做一个崩溃率少于千分之三噶应用app(25)-Kotlin的路由跳转

大家好,我系苍王。以下是我这个系列的相关文章,有兴趣可以参考一下,可以给个喜欢或者关注我的文章。[Android]如何做一个崩溃率少于千分之三噶应用app--章节列表很久没法表文章了,是因为近来实在太忙了。作为程序员,每天十点,半夜一两点下班,感觉身体真的吃不消。我们的团队是伟大的,16天开发一个新的app,8天开发,8天测试,然后上线。或者这是很好的人生经历。但是大脑得不到任何休息,没有了陪伴另家人的时间,没有可以对自己输入,或者输出的事情,也会开始怀疑人生了。我很喜欢程序员这份职业,是因为它能够创造出有趣的东西。我想做一些有趣的东西,我希望搭建自己想要的东西。但是在公司工作,是无法实现这些的。所以我开始写作,开始写一些自己喜欢的内容,在这个时候也得到很多同学的关注,给予各种的鼓励。我并不...阅读全文

博文 2017-06-12 17:02:23 CangWang

Kotlin学历之空安全

简述在java中Null是最常见的陷阱之一,在很多时候不得不写非空判断来增加代码的安全性,随着业务的增长,非空的判断会越来越多,难免会失去控制。kotlin在这个问题上就显得更加的智慧,通过操作符 ?、 !! 来约束可空属性。它是怎么实现的呢?往下看 - -?操作符?操作符表示 该属性可能为null ,在使用过程中需要加以判断。var a: String = "abc"a =null// 编译错误 根本无法运行 var a: String? = "abc"a =null// 编译正常 //在使用过程中必须加 判断 不判断编译错误if(a!=null) print((a as String).length ) else print(-1)//上面写法有更简单的a?.length ? : -1 ...阅读全文

博文 2017-06-20 20:03:59 Pape

光看这几个语法糖,就值得你试试Kotlin

最近这几天注意到Kotlin.试了一下,把现在的Java项目翻译成Kotlin,感觉很爽.算是浅尝辄止.见笑. 第一:Null Safety 这个语法糖很适合写Android程序. 比如 if (a != null){ return a.b; } else{ return null; } 上面这个很简单,可以直接用一个三元运算符解决.而如果是下面这种情况呢 a.b.c.d java就要写成这种形式 if (a == null){ return null; } if (a.b == null){ return null; } if (a.b.c == null){ return null; } return a.b.c.d 而如果用Kotlin,可以直接 a?.b?.c?.d 有没有一行更比多...阅读全文

博文 2017-05-25 21:00:19 wynwyy

Android上使用Lombok

Android上使用Lombok [TOC] 简介 最近几天尝试了一把后端的工作,发现后端同学使用了一个第三库——Lombok,用了一下,感觉还不错,特来介绍一下,感觉和以前介绍过的AutoValue挺像的。 Lombok 官网上面有个几分钟的视频,接单介绍了Lombok的用途,使用方法很简单,只需要依赖对应的jar文件,然后在对应的Java文件上使用注解即可。 先看个例子,下面是常见的一个Java一个实体类,含有field、setter、getter、equals、hashcode、toString方法。 public class User { private int id; private String name; public int getId() { return id; } pu...阅读全文

博文 2017-07-14 15:04:20 流水不腐小夏

android socket 发送心跳包

在项目中,有如下需求:Android客户端向服务器发送数据,收到服务器返回的数据发送成功标识后,客户端即与服务器建立数据一来一往的心跳连接,若服务器端断开时,客户端接收到通知,关闭Service停止发送数据;代码如下: public class BackService extends Service { private static final String TAG = "BackService"; /** 心跳检测时间 */ private static final long HEART_BEAT_RATE = 3* 1000; /** 主机IP地址 */ private static String HOST = "192.168.1.30"; /** 端口号 */ public stat...阅读全文

博文 2017-07-14 10:02:51 微笑的江豚

Kotlin——集合详解

集合是开发中非常常用的知识,比如操作各种数据集,各种算法,保存网络请求结果,作为Adapter数据集,如果你不会集合的知识,那么可能连显示一个基本的ListView列表都做不到,今天就来说说Kotlin中集合的知识。 Kotlin 中的集合按照可变性分类可以分为: 可变集合 不可变集合 按照类型分类可以分为: List集合 Map集合 Set集合 结合在一起就是说List,Map,Set又都可以分为可变和不可变两种。具体来说对于List List ——声明不可变List集合 MutableList——声明可变List集合 对于Map Map——声明不可变Map集合 MutableMap——声明可变Map集合 对于Set Set——声明不可变Set集合 MutableSet——声明可变Set集...阅读全文

博文 2017-06-06 15:02:48 Knight_Davion

Android线程池

前言 线程池是一个很重要概念,在初学时我们都是通过new Thread来开启一个线程进行联网操作,但是跟服务端交互多了,如果还是使用new Thread()来开启子线程,在一个应用中我们频繁的去通过这个方法去开启线程,这对性能来说是很大的浪费,频繁的开启销毁线程对内存的消耗是很大的,而频繁的开启线程也让整个应用的线程管理显得很混乱,这是不可取的,这时候使用线程池就可以解决这些问题了,这篇文章我会尝试将线程池概念和应用说清楚。 1.线程的运行机制 开启线程过多,会消耗cpu 单核cpu,同一时刻只能处理一个线程,多核cpu同一时刻可以处理多个线程 操作系统为每个运行线程安排一定的CPU时间—-时间片,系统通过一种循环的方式为线程提供时间片,线程在自己的时间内运行,因为时间相当短,多个线程频繁地...阅读全文

博文 2017-06-21 10:02:50 cenzr

Android与服务端使用Https加密通信

Https证书 现在网络安全越来越受重视,通用做法是采用https加密通信,使用https需要数字证书,只有合法的证书才能被浏览器、操作系统默认支持,而所谓的合法证书是在CA公司那购买的(原来我们的合法性是花钱从别人那买来的,不得不吐槽这种互联网安全设计真是坑爹),虽然现在也有一些免费CA证书,但申请还是挺麻烦,这里我们使用自己生成的https证书。 服务端使用https 生成https证书 JDK自带的keytool工具可以很方便生成https证书,可以查看它的使用方法: 比如这条命令就可以生成一个有效期10年的证书: keytool -genkey -alias spring -validity 3560 -keystore spring.keystore 服务端配置https证书 服务...阅读全文

Kotlin 属性

属性和 Java 类似, 可以是 var 或者 val, 可以加可见性修饰符。声明属性的完整语法是: var : [= ] [] [] var name: String get() = field - 1 set(value) { field = value -1 } Kotlin 提供了一种自动的后端域变量, 可以通过 field 标识符来访问。 一般情况不会修改属性的 getter 和 setter, 使用默认实现就可以,如上的代码并不常用。常用的是修改可见性,如下示例: var name: String private set // 可见度为 priva...阅读全文

博文 2017-05-27 15:21:47 jinkui

Kotlin学历之委托属性

简述在java中一些属性的具有相同的行为怎么办,抽象出类然后再去依赖调用,而在Kotlin中只需要一个by关键字就能省去繁琐的依赖。属性的委托主要是统一实现了对属性的set,get。Kotlin 标准库还为几种有用的委托提供了工厂方法: 延迟属性(lazy properties): 其值只在首次访问时计算, 可观察属性(observable properties): 监听器会收到有关此属性变更的通知, 把多个属性储存在一个映射(map)中,而不是每个存在单独的字段中。 下面将通过编译器的代码例子详细学习。例1:声明方式val/var <属性名>: <类型> by <表达式>例2:by <表达式> 这个表达式怎么写,下面一个例子class ByDemo{ operator fun getVal...阅读全文

博文 2017-06-19 12:03:56 Pape

四、Kotlin中的null安全(每日持续更新中……)

科技资讯近日,高通公司正式向美国国际贸易委员会(ITC)提起诉讼,指控苹果公司的部分iPhone机型侵犯了其六项专利。作为诉讼的一部分,高通公司希望ITC禁止进口某些未使用高通芯片的iPhone机型,并禁止苹果公司继续销售那些已进入美国的同类设备。 Kotlin对比于Java的一个最大的区别就是它致力于消除空引用所带来的危险。在Java中,如果我们尝试访问一个空引用的成员可能就会导致空指针异常NullPointerException(NPE)的出现。在Kotlin语言中就解决了这个问题,下面来看看它是如何做到的。在Kotlin中,类型系统将可空类型和不可空类型进行了区分,例如,String为不可空类型,String?为可空类型,如果将不可空类型赋值为null将会编译不通过。 var a: S...阅读全文

博文 2017-07-12 20:03:46 唐先明

Kotlin编写Android的感想以及一些个人的看法

昨日闲暇之余 发现Kotlin这门新语言再看了一些大神的介绍之后 就觉得这东西好用,特别好用其语言语法简洁明了 又能与java无缝连接 再加上它的老子是开发IDEA工具的 对工具的支持更是得天独厚在学了一天之后 特意来说说自己的看法。先感受一下代码 再也不用写FindViewByID了是不 什么extends什么implements 统统不要 在学习的时候 听好多大神说它是空指针安全的 虽然不太懂是什么意思 唯一发现的就是空指针出现的时候 app是直接闪退 而不是抛出一个恶心的什么错误窗口接下来说说自己的看法 : 在学习这个语言的时候本人觉得并不是多难学 只是一些语法的改变而已 所获得则是简洁明了的代码 再加上可以将原有的java代码转换为Kotlin代码 更加节省了学习成本 此语言值得学习...阅读全文

博文 2017-05-27 15:20:12 冰绫

KotLin(1.1)学习笔记(1)——集合

2017年的google开发者大会宣布Android Studio内置kotlin支持后,我也开始接触kotlin。这一系列笔记是一个没有接触过高级语言的小白,学习kotlin的记录记录历程。 一 集合 与java不同,kotlin中的集合分为可变集合(MutableCollection)和不可变集合(Collection)。不可变集合包括了(list,set,maps等);可变集合如(MutableList,MutableSet,MutableMap等)下面用代码来看一下Collection的基本用法吧 kotlin中文官网-集合Kotlin 没有专门的语法结构创建 list 或 set。 要用标准库的方法,如 listOf()、 mutableListOf()、 setOf()、 mut...阅读全文

博文 2017-05-27 15:18:06 范式魂

Kotlin 基本语法

包声明 package xxx.xxx.xx 如: package com.talent.kotlin 引入类 与Java没啥区别 import java.util.* 有多个包会默认导入到每个 Kotlin 文件中: kotlin.* kotlin.annotation.* kotlin.collections.* kotlin.comparisons.* kotlin.io.* kotlin.ranges.* kotlin.sequences.* kotlin.text.* 函数定义 一般函数 函数定义使用关键字 fun,参数格式为 fun METHOD_NAME(PARAM1_NAME:PARA1_TYPE,PARA2_NAME:PARA2_TYPE):RETURN_TYPE{ MET...阅读全文

博文 2017-07-21 19:03:43 郎官人

{Kotlin学习日记}Day24 Koan第八关

大家好,我是William。今天是Koan第八关,Nullable types,空指针类型。 闯关链接: https://try.kotlinlang.org/#/Kotlin%20Koans/Introduction/Nullable%20types/Task.kt Introduction Nullable types Read about null safety and safe calls in Kotlin and rewrite the following Java code using only one if expression: public void sendMessageToClient( @Nullable Client client, @Nullable Strin...阅读全文

博文 2017-08-02 19:03:43 William李梓峰

koltin语言学习(一)——什么是koltin

自:Koltin China (一) 介绍 #Kotlin-for-Android-Dev 1. 什么是Kotlin? Kotlin是JetBrains开发的基于JVM的语言。Kotlin是使用Java开发者的思维被创建的,Intellij作为它主要的开发IDE。对于Android开发者,有两个有趣的特点: 对Java开发者来说,Kotlin是非常直觉化的,并且非常容易学习。语言的大部分内容都是与我们知道的非常相似,不同的地方,它的基础概念也能迅速地掌握它。 它与我们日常生活使用的IDE无需配置就能完全整合。Android Studio能够非常完美地理解、编译运行Kotlin代码。而且对这门语言的支持来正是自于开发了这个IDE的公司本身,所以我们Android开发者是一等公民。 但是这仅仅是...阅读全文

博文 2017-09-11 14:00:00 xl-phoenix

Kotlin基础语法概念类

做为kotlin新人本篇为记录篇主要为了加深记忆和查阅使用,会有近白话文的解释和相关资料链接(部分)方便快速阅读理解,会不停更新。如有遗漏或不对请指出。一切以官网为主https://kotlinlang.org/docs/reference/ 继承 需要在class前加open关键字或者abstractopen class Animal { } abstract class Animal(){ } 构造函数 ps:默认构造函数(主构造函数) 普通open class Animal { }会有一个默认空的构造函数, 添加默认构造函数open class Animal(s:String) { }(s:String)为默认构造函数,当这样写后也就覆盖了空构造函数,当再要写新的构造函数时需要使用co...阅读全文

博文 2017-05-27 20:02:10 EasonDev

kotlin阅读笔记(12)-代理

主要内容 代理类 代理属性 标准代理 代理类 kotlin默认支持代理模式,不需要额外写代码,只需要进行声明即可,声明使用 :以及by关键词,声明以后,代理类可以使用被代理类的中声明为public的方法。 /** * 被代理类接口 */ interface Base { fun display() } /** * 被代理类 */ open class BaseImpl : Base { override fun display() = kotlin.io.print("just display me.") } /** * 代理类,使用:以及by关键词进行声明 */ class Drived(base: Base) : Base by base /** * 使用代理类 */ fun show(...阅读全文

博文 2017-05-27 15:18:37 黑石礁大魔王

Kotlin 中延迟初始化的非空属性,如何避免使用不必要的 !! 操作符

博客原文 http://johnnyshieh.me/posts/kotlin-property-lazy-init-not-null/ 最近在写 Kotlin 版本的 Gank 客户端(干货集中营 app)时,发现一个非常烦人的事情:有的成员属性不能在构造函数中初始化,会在稍后某的地方完成初始化,可以确定是非空,但是因为不能在构造时初始化只能定义为可能为空的类型(T?),然后在后面调用时都要加上!!操作符。下面本文将逐步分析这种场景的解决方案,最终提供一种优雅的方式。 这里先给出最终解决方式(为了部分喜欢直奔主题的开发者): notNull 委托属性 lateinit 修饰符 注:本文的第一种解决方法来源于《Kotlin For Android Developers》,学习 Kotlin ...阅读全文

博文 2017-06-27 12:03:43 JohnnyShieh

Kotlin学习记录---Null的安全性

Java中常见的错误就是访问空引用的成员变量,导致空引用异常,就是我们 常说的空指针异常--NullPointerException(简称为NPE). 一、kotlin中允许一个变量可以为空字符串,写作--String? 栗子1: var a:String?="abc" a=null;//编译可用过 栗子2: var b:String="abc" b=null;//编译错误 原因:因为变量b在声明时没有指明可以为null的属性 同理: 在我们访问一个变量a(为可以为空的类型)的属性或者方法时,应该保证 其不会造成NPE; val l=a.length()//编译错误 原因:变量a可能会是null, 但是访问变量b的相同方法,则不会出现这个问题 val l=b.length()//因为变量b不...阅读全文

博文 2017-05-27 15:25:27 BadMonkey

Spring Boot 与 Kotlin Web应用的统一异常处理

做Web应用,请求处理过程中发生错误是非常常见的。Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容。 选择一个之前实现过的Web应用(chapter11-5-1 )为基础,启动该应用,访问一个不存在的URL,或是修改处理内容,直接抛出异常,如: @RequestMapping("/hello") @Throws(Exception::class) fun hello() { throw Exception("发生错误") } 注意版本实例修改默认端口,现在为8083,如果想修改为默认的,请修改application.yml文件 server: port: 8080 此时,可以看到类似下面的报错页...阅读全文

博文 2018-01-19 18:02:08 quanke_

Kotlin最简单的入门教程——集合

Kotlin最简单的入门教程——环境Kotlin最简单的入门教程——基础类型(一)Kotlin最简单的入门教程——基础类型(二)Kotlin最简单的入门教程——类和继承Kotlin最简单的入门教程——可见性修饰符,扩展,数据类,密封类Kotlin最简单的入门教程——委托Kotlin最简单的入门教程——神秘的Lambda 集合 Kotlin 区分可变集合和不可变集合(lists、sets、maps 等) Kotlin 的 List 类型是一个提供只读操作如 size、get等的接口。和 Java 类似,它继承自 Collection 进而继承自 Iterable。改变 list 的方法是由 MutableList 加入的。这一模式同样适用于 Set...阅读全文

博文 2017-06-08 19:02:08 next_discover

kotlin阅读笔记(8)-扩展

主要内容 概述 扩展函数 扩展属性 扩展函数或属性范围 概述 kotlin允许扩展类的属性和方法,不需要继承或使用 Decorator 模式。扩展是一种静态行为,对被扩展的类代码本身不会造成任何影响。 扩展函数 扩展函数定义形式: fun receiverType.functionName(params){ body } 其中,receiverType 为待扩展的类名,. 修饰符为扩展符,functionName 为自定义的扩展函数名,params 为自定义的扩展函数参数,可为空。 class User(var name:String) /**扩展函数**/ fun User.Print(){ print("User name is $name") } fun main(arg:Array<...阅读全文

博文 2017-05-27 15:24:25 黑石礁大魔王

Kotlin 枚举类

枚举类的最基本的用法是实现类型安全的枚举: 枚举常量用逗号分隔,每个枚举常量都是一个对象。 enum class Direction { NORTH, SOUTH, WEST, EAST } 初始化 每一个枚举都是枚举类的实例,它们可以被初始化: enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF) } 默认名称为枚举字符名,值从0开始。若需要指定值,则可以使用其构造函数: enum class Shape(value:Int){ ovel(100), rectangle(200) } 匿名类 枚举还支持以声明自己的匿名类及相应的方法、以及覆盖基类的方法。如: enum class Pr...阅读全文

博文 2017-09-27 17:03:46 郎官人