Kotlin
大菜鸟一号
这个作者很懒,什么都没留下…
展开
-
Kotlin基本语法
Kotlin基本语法基本语法定义包名定义函数定义局部变量注释使用字符串模板使用条件表达式使用一个返回可空值的函数使用循环代码风格Kotlin基本语法基本语法定义包名在源文件的开头定义包名:package my.demoimport java.util.*定义函数定义一个函数接受两个 int 型参数,返回值为 int :fun sum(a: Int , b: Int) : I原创 2017-10-14 20:38:04 · 345 阅读 · 0 评论 -
高阶函数和Lambda表达式
高阶函数就是可以接受函数作为参数并返回一个函数的函数。 为高阶函数传递函数类型参数值可以用如下3种方法 1. 直接定义函数,并传递,在函数名前需要加:: 1. 使用Lambda表达式 1. 使用匿名函数// 高阶函数(higher-order function)interface Product{ var area:String fun sell(name:St...原创 2018-05-07 12:33:46 · 578 阅读 · 0 评论 -
函数
函数函数声明kotlin 中用关键字 fun 声明函数:fun double(x: Int): Int {}函数用法通过传统的方法调用函数// 函数的基本用法fun double(x:Int):Int{ return 2 * x}class MyClass{ fun add(x:Int, y:Int):Int { ...原创 2018-05-06 17:44:46 · 430 阅读 · 0 评论 -
标准委托
1.惰性加载拉远站是一个函数,接受一个lambda表达式座位参数初始化函数,与前面实现的delegate类似,返回一个Lazy类型的实例,这个实例可以座位委托实现懒加载属性: 第一次调用get的时候,将会执行从lazy函数传入Lambda表达式,然后会记住这次执行的结果,以后所有对get()的调用都只会简单地返回以前记住的结果。// 标准委托:惰性委托(lazy)val lazy...原创 2018-05-05 17:38:58 · 217 阅读 · 0 评论 -
委托(Delegate)
1. 类的委托委托模式 给实现继承提供了很好的代替方式, Kotlin 在语法上支持这一点,所以并 不需要什么样板代码。 Derived 类可以继承 Base 接口并且指定一个对象代理 它全部的公共方法:// 类的委托// AOP(面向方面编程)interface Base{ fun print()}class BaseImpl(val x:Int):Bas...原创 2018-05-05 14:35:40 · 236 阅读 · 0 评论 -
对象表达式
有时候我们想要创建一个对当前类有一点小修改的对象,但不想重新声明一个子 类。java 用匿名内部类的概念解决这个问题。Kotlin 用对象表达式和对象声明巧妙 的实现了这一概念。java实现class MyClass{ public String name; public MyClass(String name) { this.name = n...原创 2018-05-05 11:43:36 · 547 阅读 · 0 评论 -
泛型
1. 泛型基础2. 类型变异3.类型投射(Type Projection)1. 泛型基础像 java 一样,Kotlin 中可以拥有类型参数java实现:class Box<T>{ public T value; public Box(T t) { value = t; }}pu...原创 2018-05-04 17:03:31 · 191 阅读 · 0 评论 -
Kotlin---------------可空类型与? ?: ?. !!
Kotlin—————可空类型与? ?: ?. !!原创 2018-05-10 19:53:17 · 192 阅读 · 0 评论 -
封闭类(Sealed Classes)
封闭类(Sealed Classes)用于代表严格的类结构,值只能是有限集合中的某中类型,不可以是任何其 它类型。这就相当于一个枚举类的扩展:枚举值集合的类型是严格限制的,但每个 枚举常量只有一个实例,而密封类的子类可以有包含不同状态的多个实例。 声明密封类需要在 class 前加一个 sealed 修饰符。密封类可以有子类但必须全部嵌 套在密封类声明内部使用封闭类的主要好处是when...原创 2018-05-04 09:57:12 · 4386 阅读 · 1 评论 -
数据类
数据类复制数据类我们经常创建一个只保存数据的类。在这样的类中一些函数只是机械的对它们持有 的数据进行一些推导。在 kotlin 中这样的类称之为 data 类,用 data 标注:data class User(val name: String, val age: Int)编译器会自动根据主构造函数中声明的所有属性添加如下方法: - equ...原创 2018-05-03 19:46:14 · 445 阅读 · 0 评论 -
Kotlin静态方法和静态类
Kotlin静态方法和静态类静态类静态方法Kotlin静态方法和静态类静态类所有方法都为静态方法,如工具类、常量池、等,直接把;类名前的class替换成objectobject Constants1 { val text = "hello world!"}调用Constants1.text静态方法在Kotl...原创 2018-04-25 17:40:57 · 5785 阅读 · 2 评论 -
扩展
1.扩展原声API2.扩展自定义类3.成员函数冲突的解决方案4. 扩展属性5.扩展的范围6.在类中的扩展1.扩展原声API为了声明一个函数扩展,我们需要在函数前加一个接收者类型作为前缀。下面我们 会为 MutableList 添加一个 swap 函数:// 扩展:为类添加成员函数和属性fun MutableList<Int>...原创 2018-05-03 15:03:08 · 247 阅读 · 0 评论 -
枚举类
1.枚举类基本用法2.枚举类定义变量3.为枚举类指定对应的值4. 匿名类1.枚举类基本用法枚举类最基本的用法就是实现类型安全的枚举enum class Direction {NORTH,SOUTH,WEST}每个自举常量都是一个对象。枚举常量通过逗号分开。2.枚举类定义变量enum class Direction{ ...原创 2018-05-03 10:59:00 · 205 阅读 · 0 评论 -
Kotiln类和继承
Kotiln类和继承类(class)构造器主构造函数第二构造函默认参数类成员属性的用法函数嵌套类修饰符(作用域)继承接口Kotiln类和继承类(class)Kotlin中,使用class关键字生命一个类。类声明由类名,类头(指定其类型参数,主构造函数等)和大括号括起来的类体组成。class MyClass publi...原创 2018-01-14 14:39:30 · 619 阅读 · 0 评论 -
Kotiln控制流
Kotiln控制流原创 2017-10-15 21:58:21 · 1015 阅读 · 0 评论 -
Kotiln包
源文件的所有内容(比如类和函数)都被包声明包括。因此在上面的例子中,bza()的全名应该是foo.bar.bza,Goo的全名是foo.bar.Goo如果没有指定包名,那这个文件的内容就从属于没有名字的 "default" 包。原创 2017-10-15 21:18:02 · 615 阅读 · 0 评论 -
Kotlin基本类型
在 Kotlin 中,所有变量的成员方法和属性都是一个对象。一些类型是内建的,它们 的实现是优化过的,但对用户来说它们就像普通的类一样。原创 2017-10-14 22:03:21 · 447 阅读 · 0 评论 -
内联函数
使用高阶函数带来了相应的运行时麻烦:每个函数都是一个对象,它捕获闭包,即这些变量可以在函数体内被访问。内存的分配,虚拟调用的运行都会带来开销。但在大多数这种开销是可以通过内联文本函数避免。让Lambda表达式内联进函数使用高阶含少,在运行时会带来一些不利。每个函数都是一个对象,而且它还要捕获一个闭包,也就是在函数体内部访问的那些外层变量。内存占用(函数对象和类都会占用内存)以及虚方法调...原创 2018-05-07 18:52:25 · 272 阅读 · 0 评论