首页 >> 中医推拿

从 Kotlin Linux的角度来看,Java 缺少了什么?

发布时间:2025年10月17日 12:17

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

① 基本机能类② 防止基本机能类实例本土化③ static原理④ 一个简单的大写算子,从未考虑边界线情况⑤ String种类从未提供大写机能⑥ 常用基本机能类来充分利用该机能

而Kotlin提供了延展算子机能来化解这个关键问题。

Kotlin提供了一种原理,可以延展类或适配器,而无需从类进行集成,也无需常用诸如修饰器等程式设计。只需通过一种比如说“延展”的特殊并不一定来充分利用。

例如,你可以给一个来自第三方坎的类或适配器编订愈来愈进一步算子,即使你未修改该坎。这种算子可以正常加载,就像它当初就同属该类一样。这种机制比如说“算子延展”。

要并不一定算子延展,只需在其名称年前连带一个接收者种类,督促被延展的类。

有了算子延展,上述文档就可以所作:

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

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

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

③ 就像加载String可用的算子一样加载延展算子。

注意延展算子不太可能会被“静态地”解析。延展算子并不不太可能会给仅有种类添加愈来愈进一步蓄意,只是假装而已。它们转换成的bit可执行并不类似于Java的静态原理。但是其语法要含蓄得多,而且赞成算子链式加载,这在Java当中时未做到的。

普通人泛型

Java原版5投身了泛型赞成。但是,语种设计者太执着于向下向下一致性,Java 5的bit可执行只能能与Java 5之年前的bit可执行仅仅向下兼容。这就是为什么转换成的bit可执行当中不构成泛型的缘故。这种方式将称为“泛型擦除”。与之相对的比如说“普通人泛型”(reified generics),即泛型不太可能会出现在bit可执行当中。

仅在程式可执行期间采用泛型,不太可能会导致一系列关键问题。例如,上头的原理签名不太可能会转换成大同小异的bit可执行,因此这段文档是不无论如何的:

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标准,转换成与Java程式可执行器的bit可执行向下兼容的bit可执行。但它可以通过“内联”的方式将充分利用,即程式可执行器用算子体替换内联算子加载。

上头是Kotlin文档:

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首选。

原文地址:

漳州白癜风医院预约挂号
重庆白癜风哪家医院最好
贵阳看风湿去哪家医院好
哈尔滨精神病医院挂号咨询
襄阳妇科医院去哪家好
咳嗽黄痰可以喝太极急支糖浆吗
心率慢
口舌生疮
风热感冒咳嗽吃什么药止咳化痰效果好
严重咳嗽吃什么药能快速止咳

上一篇: 政策预期转暖+中报业绩期比邻 医药ETF上涨

下一篇: 房价重归2年前......

友情链接