kotlin
文章平均质量分 58
morris131
这个作者很懒,什么都没留下…
展开
-
java调用kotlin
java调用kotlin在Java代码中,可以轻松的调用Kotlin,无缝对接,然而两者之间有一些不同的地方需要注意。属性一个kotlin属性会编译成下面java元素:gettersetterprivate field例如var firstName: String会被编译成下面这样:private String firstName;public String getFirstName() { return firstName;}public void setFirstN原创 2021-02-04 16:24:49 · 1996 阅读 · 2 评论 -
kotlin之反射
反射要想使用反射,首先需要添加依赖,下面是maven中的依赖:<dependencies> <dependency> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-reflect</artifactId> </dependency></dependencies>根据类获得Class引用原创 2021-02-03 15:25:24 · 744 阅读 · 0 评论 -
kotlin之lambda表达式
lambda表达式高阶函数高阶函数就是接受一个函数为参数,或者返回一个函数。fun caculate(a: Int, b: Int, calc: (a: Int, b: Int) -> Int) { println(calc(a, b))}fun main() { caculate(1, 2){ a, b -> a + b } caculate(1, 2){ a, b -> a - b } caculate(1, 2){ a, b -> a原创 2021-02-02 19:56:37 · 557 阅读 · 0 评论 -
kotlin之函数
kotlin之函数函数的声明使用fun关键字来声明函数:fun double(x: Int): Int { return 2 * x}函数的使用全局函数(其实就是函数声明所在类的静态方法)的使用:val result = double(2)类的成员方法的使用:Stream().read() // create instance of class Stream and call read()参数参数的定义:fun powerOf(number: Int, exponent原创 2021-02-01 11:46:57 · 600 阅读 · 0 评论 -
kotlin委托属性
委托属性kotlin中除了可以委托类外,还可以委托属性。委托属性语法如下:class Person { var name: String by Delegate()}而Delegate类需要实现ReadWriteProperty接口,ReadWriteProperty接口的声明如下:public interface ReadWriteProperty<in T, V> : ReadOnlyProperty<T, V> { public overrid原创 2021-01-29 11:45:13 · 1025 阅读 · 2 评论 -
kotlin委托类
委托类委托模式为实现继承提供了一个好的选择,在java中还需要使用各种设计模式才能实现,而kotlin中提供了原生的支持。interface MyInterface { fun print()}class MyInterfaceImpl : MyInterface { override fun print() { println("hello world") }}class DelegationImpl(var myInterface: MyInter原创 2021-01-28 14:00:26 · 770 阅读 · 2 评论 -
kotlin枚举类
枚举类基本用法enum class Season { SPRING,SUMMER,AUTUMN,WINTER}初始化enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF)}匿名类枚举类中的每个实例也可以有自己的方法,或者实现外面的方法。enum class ProtocolState { WAITING { override f原创 2021-01-28 13:59:11 · 679 阅读 · 0 评论 -
kotlin之嵌套类、内部类、对象表达式
嵌套类、内部类、对象表达式嵌套类一个类可以嵌套在另一个类里面:class OuterClass { class NestedClass { fun method() { println("hello") } }}fun main() { var outerClass = OuterClass.NestedClass() outerClass.method()}内部类内部类与嵌套类类似,都是声明在另一原创 2021-01-26 19:21:12 · 677 阅读 · 0 评论 -
kotlin中的泛型
kotlin中的泛型基本使用class Box<T>(var t: T)fun main() { var box = Box(1) println(box.t) // 1}声明处协变kotlin中的out关键字叫做variance annotation,因为是在类型声明处定义的,所以称为声明处协变。对于java来说是使用处协变use-site variance,其中类型通配符?使得协变成为可能。如果泛型类只是将泛型类型作为方法的输出值,也就是生产者,那么我们可原创 2021-01-25 19:26:18 · 648 阅读 · 1 评论 -
java中的泛型、协变、逆变、不变
java中的泛型先看下面一段java代码:package com.morris.kotlin.generics;import java.util.ArrayList;import java.util.List;public class JavaGeneric { public static void main(String[] args) { Animal a = new Cat(); List<Cat> cats = new ArrayList&l原创 2021-01-23 10:54:56 · 624 阅读 · 0 评论 -
kotlin数据类
数据类数据类有点类似java中的实体类,kotlin中可以关键字data class来声明数据类,完成类似java中lombok的功能。data class User(val name: String, val age: Int)对于数据类,kotlin会为primary constructor的参数(也是属性)自动生成下面的方法:equals()/hashCode()toString()componentN()copy()下面反编译上面定义的User类,看看kotlin编译后的数据类长原创 2021-01-22 14:44:38 · 832 阅读 · 0 评论 -
kotlin之扩展
扩展类通常要对一个类进行扩展,可以使用继承或者设计模式如装饰者模式,kotlin中提供了另外一种方法:extension。扩展方法为一个类添加方法:package com.morris.kotlin.extensionfun <T> MutableList<T>.swap(from: Int, to: Int) { var temp = this[from] this[from] = this[to] this[to] = temp}fun原创 2021-01-21 15:33:56 · 556 阅读 · 0 评论 -
kotlin之类与继承
类与继承类使用class关键字来定义一个类:class Invoice { /*...*/ }一个类由类名、类的头部(参数类型、主要构造方法)和类的内容,并用花括号括起来。其中头部和内容是可以省略的,如果一个类没有内容,花括号都可以省略,类似下面这样:class Empty构造方法一个类可以有一个主要构造方法和一个或者多个次要构造方法,主要构造方法是类的头部的一部分,主要构造方法紧跟在类名的后面:class Person constructor(firstName: String) {原创 2021-01-19 11:20:13 · 661 阅读 · 0 评论 -
kotlin基本语法
kotlin基本语法包的定义与导入包的定义必须在文件的第一行:package com.morris.kotlinimport com.morris.demo.*源文件的路径可以和包的路径不相同,也就说明包名只是一个逻辑名称,例如源码文件HelloKt.kt所在目录为com.morris.kotlin,但是其中的包声明可以为com.morris.kotlin2。程序的入口点Kotlin应用程序的入口点为main方法:fun main() { println("hello kotli原创 2021-01-18 10:24:13 · 552 阅读 · 0 评论