用 Kotlin 的函数式编程 替代 GOF 设计模式 函数式编程(FP) ---- 非常感谢您亲爱的读者,大家请多支持!!!有任何问题,欢迎随时与我交流~ ---- 值就是函数,函数就是值。...函数作为Kotlin中的一等公民,可以像其他对象一样作为函数的输入与输出。关于对函数式编程的支持,相对于Scala的学院派风格,Kotlin则是纯的的工程派:实用性、简洁性上都要比Scala要好。...Church 在 1933 年搞出来一套以纯λ演算为基础的逻辑,以期对数学进行形式化描述。 λ 演算和递归函数理论就是函数式编程的基础。...代码块的“体积”就是接口内部的实现逻辑(API内部的实现代码)。 在OOP中,一个理想的对象应该是只暴露它的抽象接口(纯表面, 无体积),其方法则扮演箭头的角色。...我们在编程中,不可能使用纯的对象(对象的行为方法其实就是函数),或者纯的函数(调用函数的对象、函数操作的数据其实就是数据结构)来创造一个完整的世界。
文章目录 一、闭包概念 二、Java 中函数作为参数的替代方案 ( 匿名内部类 ) 一、闭包概念 ---- 匿名函数 就是 Lambda 表达式 , 同时也是 闭包 , 三者的是相同的概念 ; 闭包意义...在一个 脚本文件 中 , 如 Kotlin 的脚本 , 就需要 使用 函数 进行作用域区分 , 将一个作用域内的相关代码 , 都写在一个函数中 , 这样就可以将作用域分区分开 ; 匿名函数 作用域 :...参数 或 返回值 的 函数 ; 使用 匿名函数 / Lambda 表达式 / 闭包 作为 参数 / 返回值 的函数 是 高级函数 ; Kotlin 中经常使用 链式调用 , 就是 函数式编程 的风格...; 二、Java 中函数作为参数的替代方案 ( 匿名内部类 ) ---- Kotlin 中引入 函数类型 , 将 匿名函数 / Lambda 表达式 / 闭包 作为 函数参数 或 返回值 , 可以写出...更加灵活的代码 ; Java 8 开始 支持 Lambda 表达式 , 但是 不支持 函数 作为参数 , 也 不支持将 函数 赋值给变量 ; Java 语言 将 函数 作为参数 的 替代方案 是 : 使用
虽然 Kotlin 的开发很方便,但当你与他人协作时,总会碰到 Java 与 Kotlin 代码共存的代码项目。 本章就教你如何优雅的实现 Kotlin 与 Java 混合编程。...在 M13 之前,Java 中的XXX.class对应 Kotlin 代码中的JavaClass,而 M13 之后写法已被改为XXX::class.java。...因为作为 library,如果使用它的工程是纯 Java 完成的,引入后会额外增大 200k 左右大小,同时它有可能会造成某些情况下编译异常。...3.2 在 Kotlin 中调用 Java 代码 3.2.1 返回 void 的方法 如果一个 Java 方法返回 void,对应的在 Kotlin 代码中它将返回 Unit。...3.2.2 与 Kotlin 关键字冲突的处理 Java 有 static 关键字,在 Kotlin 中没有这个关键字,你需要使用@JvmStatic替代这个关键字。
一、Activity是什么 主要是进行用户之间交互的一个组件 二、Activity的基本用法 一般activity创建之后会有两个文件,一个是实现逻辑的kotlin文件或者java文件,一个表示当前...singleInstance 每个activity都有一个自己的返回栈来进行管理activity的实例 六、Activity的最佳实践 利用javaClass.simplename这个api可以获取当前类的类名...,创建一个baseActivity进行activity的管理,利用list进行操作,退出整个程序 七、Kotlin 课堂:标准函数和静态方法 标准函数 主要解决平时使用对象方法时的多次使用同一个对象的代码冗杂性...,kotlin没有提供直接静态的方法,但有许多可以替代的方法 例如使用单例类,不过缺点是类中的全部方法都会变成静态方法 object aaa{ fun doAction1(){...} } 还有一种方法是顶层方法,即没有定义在类中的方法,会被kotlin全部编译成静态方法 fun do(){ } kotlin文件中直接调用do()方法即可 java文件中则需要调用
// Calling Java code from Kotlin class KotlinClass { fun kotlinDoSomething() { val javaClass...= JavaClass() javaClass.javaDoSomething() println(JavaClass().prop) } }============...======================// Calling Kotlin code from Java public class JavaClass { public String getProp...Google对 Kotlin 的选择重申了Android对开发者 开放生态系统的承诺,随着 Google 的发展和 Android平台的发展,Google 希望 kotlin 语言的发展, 也很高兴看到...kotlin 语言的发展。
在以前,因为学过一段时间Kotlin(并没有实际开发中用过),很多东西都忘记了,但是kotlin的代码看起来其实和Java没什么区别,感觉都差不多。所以不要认为 Kotlin 很难学。...Kotlin的内联函数属于Kotlin的高级特性之一,使用起来也非常简单。...没加 inline 之前 加上 inline 之后 解释就不用多说了吧,kotlin 自动帮我们将方法在编译期就加在了相应的调用处,免除了 java 中的入方法栈与退栈。...PS:(不要觉得kotlin好难,其实我也是现学现卖,虽然以前也看过一点基础,哈哈) 下面我们再扩展一些知识: 以下源于大家的回答,我并不能明白具体原因,所以需要周末补课。...reified java中,不能直接使用泛型的类型 kotlin可以直接使用泛型的类型 inline fun startActivity() { startActivity(Intent(this
当中)的处理方式是一致的,返回值都是协变的,但对于反射来说,Java 对参数类型要求几乎没有,而 Kotlin 则非常严格,这样会导致的问题就是 Kotlin 的反射使用起来有些难受。...不知道大家怎么看这件事儿,kotlin 对象获取 KClass 实例的方法其实不止 person::class 这样一种,还有一种叫做:this.javaClass.kotlin ,这货的类型是 KClass...所以我们的代码还可以改成这样: inline fun T.description() = this.javaClass.kotlin.memberProperties...KClass 实例的: public class Reflection { public static KClass getOrCreateKotlinClass(Class javaClass...) { return factory.getOrCreateKotlinClass(javaClass); } ... } 嗯,人家哥们直接用了 Java 的 raw
1、获取类的引用 在 Kotlin 中 , 使用 :: 双冒号操作符 获取 类的类型对象引用 代码格式为 : Java或Kotlin类名::class 获取的 Kotlin 类 的 类型对象 的类型...} 2、获取对象类型的引用 在 Kotlin 中 , 使用 :: 双冒号操作符 获取 对象类型的引用 代码格式为 : Java或Kotlin实例对象::class 获取的 对象类型的引用 的类型 为 KClass...---- KClass 是 Kotlin 类的 引用类型 , 是 Kotlin 类的实例对象 , 通过 类名::class 可以获取 KClass 引用 ; KClass 提供了关于 Kotlin 类的一系列功能...: KProperty1> = Student::javaClass // KProperty0> var...studentJavaClass2: KProperty0> = student::javaClass }
kotlin中的集合 Kotlin中的集合分为两派:可变集合与不可变集合 ?...,而是一个普通的函数 kotlin中的集合与Java中集合的关系 接下来让我们看一下创建的对象类型: println(list.javaClass) //class java.util.Arrays$ArrayList...println(set.javaClass) //class java.util.LinkedHashSet println(map.javaClass) //class java.util.LinkedHashMap...如你所见,Kotlin并没有采用自己的集合类,而是采用标准的java集合类,这对java开发者来说是个好消息。...为什么Kotlin没有自己专门的集合类呢? 答: 因为使用标准的java集合类可以更好的和java交互。kotlin与java互调不用考虑集合类的转换。
name: String, val age: Int) val person = Person("jingbin", 28) val kClass = person.javaClass.kotlin...XClass // val kClass = obj.javaClass.kotlin // // 取得类的所有属性 // val properties...代码清单10.2 使用属性过滤序列化对象 // private fun StringBuilder.serializeObject(obj: Any) { // obj.javaClass.kotlin.memberProperties...总结 Kotlin 中应用注解的语法和 Java 几乎一模一样。...要获取一个 KClass 的实例,如果类是静态己知的,可以使用 ClassName::class :否则,使用 obj.javaClass kotlin 从对象实例上取得类。
Kotlin 跟 Java 可以无缝衔接,因此 Kotlin 能够使用 Java 的反射机制。另外,Kotlin 也有自己的反射机制,需要额外地引入 kotlin-reflect.jar。...kotlin.reflect.full 是主要的 Kotlin 反射 API kotlin.reflect.jvm 用于 Kotlin 反射和 Java 反射的互操作。...Kotlin 反射的特性包含: 提供对属性和可空类型的访问权限,这是由于 Java 没有属性和可空类型的概念。 Kotlin 反射不是 Java 反射的替代品,而是功能的增强。...= MyClass::class.java 添加 Java 实例对象的.javaClass后缀(Java 实例对象的扩展属性 javaClass)。...val obj = MyClass() val clazz = obj.javaClass 调用的类是 Kotlin 类 val clazz = MyClass::class 此时 clazz 的类型是
部分团队成员是 Kotlin 的拥护者,再加上我们都想尝试一下新的东西,于是我们决定用 Kotlin 来开发这个项目。...2018年春天,使用 Kotlin 开发几个月之后,我们总结了 Kotlin 的优缺点,最终结论表明 Kotlin 降低了我们的生产力。 于是我们使用 Java 来重写这个微服务项目。...Kotlin 类和 Java 类进行了区分,并为其提供了语法规范: val kotlinClass : KClass = LocalDate::class val javaClass...首先,你需要在名称和类型之间加入这个多余的冒号。这个额外角色的目的是什么?为什么名称与其类型要分离?我不知道。可悲的是,这让你在 Kotlin 的工作变得更加困难。...我是面向对象的,静态成员不是面向对象的。” Kotlin 回答。 “好吧,但我需要 MyClass 的 logger,我该怎么办?” “这个没问题,使用伴生对象即可。” “那是什么东西?”
public boolean isPrimitive() Kotlin中的反射 在Kotlin中,字节码对应的类是kotlin.reflect.KClass,因为Kotlin百分之百兼容Java,所以...Kotlin中可以使用Java中的反射,但是由于Kotlin中字节码.class对应的是KClass类,所以如果想要使用Java中的反射,需要首先获取Class的实例,在Kotlin中可以通过以下两种方式来获取...//1.通过实例.javaClass var hello = HelloWorld() hello.javaClass //2.通过类Kclass类的.java属性 HelloWorld::class.java...//1.通过类::class的方式获取Kclass实例 val clazz1: KClass<* = HelloWorld::class //2.通过实例.javaClass.kotlin获取Kclass...实例 var hello = HelloWorld() val clazz2 = hello.javaClass.kotlin 获取了Kclass实例之后,就可以调用Kotlin中声明的一些关于反射的方法了
SAF-Kotlin-log 是一个Android的日志框架,这几天我抽空重新更新了一下代码。...github地址:https://github.com/fengzhizi715/SAF-Kotlin-log 一....我考虑使用责任链模式来替代when表达式,未来有其他需求只需增加一个单独的Handler即可。 2.2 如何使用责任链模式?...在日志类L中使用Kotlin的init代码块来做这件事,init代码块相当于Java的静态代码块。...总结 这篇文章应该算是很久之前两篇文章的后续,现在越来越多的工具我开始使用Kotlin来开发。
但是,如果您使用的是 CentOS 8,那么 2022 年有哪些替代方案?不幸的是,即使您找到了,服务器应用程序的迁移也将是另一个挑战。然而,这里有一些选项可以在 2022 年取代 CentOS。...◆ CentOS 8 Linux 的最佳替代品 ◆ 1.Ubuntu / Debian 当然,每当我们谈论替代 CentOS 的服务器操作系统替代品时,Ubuntu LTS 版本将是第一选择。...◆ 2、Oracle linux 与具有 RPM 包管理的 CentOS 8 Linux 最接近的替代选项是 Oracle Enterprise。...另一方面,CentOS 7直到2024年才会出现,因此无需急于寻找和切换到CentOS 替代品,尤其是服务器。...当然,在4 年内我们也将有更多可靠和稳定的选择来替代 CentOS 7,直到现在,使用 CentOS 6 的用户仍然可以考虑采用Ubuntu、Debian、Oracle 或 OpenSUSE。
*/ // javaClass 相当于 java 中的getClass() LogUtil.e(set.javaClass.toString()) LogUtil.e...(list.javaClass.toString()) LogUtil.e(map.javaClass.toString()) /** * class...LogUtil.e(builder) // Kotlin! 4.处理集合: 可变参数、中辍调用和库的支持 这一节将会展示 Kotlin 标准库中用来处理集合的一些方法。...Kotlin 可以给函数参数定义默认值,这样大大降低了重载函数的必要性,而且命名参数让多参数函数的调用更加易读。...Kotlin 可以用扩展函数和属性来扩展任何类的API,包括在外部中定义的类,而不需要修改其源代码,也没有运行时的开销。 中辍调用提供了处理单个参数的,类似调用运算符方法的简明语法。
IOC全称Inverse Of Control,中文释义为控制反转,常见的方式叫作依赖注入(Dependency Injection),IOC核心的思想和代理模式一样,使用者不必关心资源的具体获取,资源通过第三方来管理...之前有提到过注解是设计框架时常用的工具,利用注解可以在编译期(通过APT)或运行期生成代码,今天通过运行期使用注解来实现ButterKnife的布局和事件绑定功能 一、布局注入 我们希望在类上通过注解的方式...、监听方法传入的参数类型、监听类的回调函数名。...强转成Java Annotation对象,因为kotlin无法获取元注解(注解的注解) (it as java.lang.annotation.Annotation).annotationType...元注解:Event method.annotations.forEach { //强转成Java Annotation对象,因为kotlin无法获取元注解
FTP和SFTP是最广泛的文件共享方法之一,这一点毋庸置疑。 它们的优势在于使用简单,而且通常是免费或非常便宜的。通常情况下,企业使用FTP发送的都是非敏感的文件。...研究表明,88%的组织难以快速有效地移动大数据,每条丢失或被窃取的数据的平均损失成本达近千元。基于FTP的解决方案的目标从来都不是为了满足快速、安全和可扩展的数字信息交换的爆炸性需求。...那么FTP的替代方案在哪里呢?...《Ftrans文件传输服务器软件》是Ftrans飞驰云联自主研发的软件产品,拥有完全自主知识产权,完美响应国产化替代要求,该产品可以帮助企业实现安全可控、高效可靠的文件传输,可以完美替代FTP或增强FTP...《Ftrans文件传输服务器软件》是集简单易用、安全可靠、可管可控于一身的国产化FTP替代解决方案,可以帮助企业以更低的成本和投入,实现高效可靠的文件传输。
第13章 使用 Kotlin 和 Anko 的Android 开发 ---- 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 非常感谢您亲爱的读者...在构建脚本中添加kotlin-gradle-plugin依赖,使用 Kotlin 对应的版本号。...在Android开发中,它可以替代 SQLite 和 ORM 框架。相比SQLite,Realm更快并且具有很多现代数据库的特性,比如支持JSON,流式api,数据变更通知,以及加密支持。...例如,在 Java 中我们可以通过在字段上使用 @BindView 来替代 findViewById 的调用。...()) .addToBackStack(todoEditFragment.javaClass.getSimpleName()) .commit()
大家好,又见面了,我是你们的朋友全栈君。 本文章只为了方便查阅。 文章目录 Kotlin简介 Kotlin与Java的异同 1.函数 2....Kotlin 特点: Kotlin 是静态类型语言并支持类型推导,允许维护正确性与性能的同时保持源代码的简洁。...无副作用:使用的纯函数。此类函数在输入相同时会产生同样的结果,并且不会修改其他对象的状态,也不会和外面的世界交互。...// Kotlin 的 javaClass 等价于 Java 的 getClass() arrayList.last() // 获取列表的最后一个...getClass() 等价于 Kotlin 的 javaClass if (arrayList.size() > 0) // 获取列表的最后一个 arrayList.get
领取专属 10元无门槛券
手把手带您无忧上云