您现在的位置:首页 >> 创意家居

从 Kotlin 开发者的尺度来看,Java 缺少了什么?

发布时间:2025/11/05 12:19    来源:新浦家居装修网

atic String capitalize(String string) { ③return string.substring(0, 1).toUpperCase()+ string.substring(1); ④}}String string = randomString(); ⑤String capitalizedString = StringUtils.capitalize(string); ⑥

① 工具箱类② 防止工具箱类重构解构③ static分析方法④ 一个简单的省略出算子,没法考量边界情形⑤ String并不一定号没法发放省略出动态⑥ 用到工具箱类来付诸该动态

而Kotlin发放了构建算子动态来补救这个疑虑。

Kotlin发放了一种分析方法,可以构建类或硬件,而不用从类进行内置,也不用用到诸如修饰器等设计模式。不须通过一种被称作“构建”的特殊表述来付诸。

例如,你可以给一个来自第三方纳的类或硬件执笔出属于自己算子,即使你不宜修改该纳。这种算子可以正常函数调用,就像它本来就仅指该类一样。这种机制被称作“算子构建”。

要表述算子构建,不须在其名称前舍弃一个数据包并不一定号,指示被构建的类。

有了算子构建,上述代UTF-就可以写出成:

fun String.capitalize2(): String { ①②return substring(0, 1).uppercase() + substring(1);}val string = randomString()val capitalizedString = string.capitalize2() ③

① 孤立的算子,不必需类封装。

② Kotlin的stdlib已经有了capitalize()算子。

③ 就像函数调用String备用的算子一样函数调用构建算子。

注意构建算子就会被“静态地”类比。构建算子并不就会给有数并不一定号掺入属于自己举动,只是假装而已。它们转换成的十六进制UTF-非常类似于Java的静态分析方法。但是其语法要简洁得多,而且拥护算子大大简解构函数调用,这在Java当中时不宜能用的。

普通人泛型号

Java旧版本5申请加入了泛型号拥护。但是,语言建筑家不算毫无疑问于向下兼容性,Java 5的十六进制UTF-只能能与Java 5之前的十六进制UTF-完全兼容。这就是为什么转换成的十六进制UTF-当中不举例来说泛型号的因素所。这种方式则称为“泛型号擦除”。与之相对的被称作“普通人泛型号”(reified generics),即泛型号就会浮现在十六进制UTF-当中。

仅在编译器期间有别于泛型号,就会导致一系列疑虑。例如,前面的分析方法签名就会转换成完全相同的十六进制UTF-,因此这段代UTF-是不准确的:

class Bag {int compute(List persons) {}int compute(List persons) {}}

另一个疑虑是如何从差值的托盘当中借助有并不一定号的差值。前面是Spring当中的一个例子:

org/springframework/beans/factory/BeanFactory.javapublic interface BeanFactory { T getBean(Class requiredType);}

微软掺入了一个 Class ,以便在分析方法体当中知悉并不一定号。如果Java有普通人泛型号,不须像前面这样执行即可:

public interface BeanFactory { T getBean();}

也许一下,如果Kotlin有普通人泛型号,我们可以改不定上述设计:

interface BeanFactory {fun getBean(): T}

算子函数调用可以改成:

val factory = getBeanFactory()val anyBean = factory.getBean() ①

① 普通人泛型号!

Kotlin即便如此必需服从JVM规范,转换成与JavaPython的十六进制UTF-兼容的十六进制UTF-。但它可以通过“COM”的方式则付诸,即Python用算子体附加COM算子函数调用。

前面是Kotlin代UTF-:

org/springframework/beans/factory/BeanFactoryExtensions.ktinline fun

概括

本文引介了四个我期望Java也有的Kotlin动态:不宜不定提及、null兼容性、构建算子,以及普通人泛型号。Kotlin还有许多其他很好的动态,但这四个动态就根本无法提升Java。

例如,有了构建算子和说道新生,再舍弃一些语法糖,就可以很纯松地执笔出DSL,就像Kotlin Routes和Beans DSL一样:

beans {bean {router {GET("/hello") { ServerResponse.ok().body("Hello world!") }}}}

别误就会:我真的Java作为一种语言,发展时必需考量很多因素所,而Kotlin的才对不够纯。但是,有竞争是好事,两者可以相互理解。

同时,我只在充分亦同就会执笔出Java,因为Kotlin已视作了我的JVM除此以外。

当中文翻译地址:

吉林牛皮癣医院去哪家好
青岛看癫痫哪里最好
重庆男科哪家医院最好
贵阳甲状腺检查
武汉妇科医院哪家更好
骨盆骨折
补肾药物
皮肤美容
治酒糟鼻
幼儿口臭

上一篇: 如今哪几个专业已经烂大街了呢?这些专业的就业上述情况怎么样?

下一篇: 黄冈市2022年高考语文试题参考答案及评分标准

友情链接