Nicolas Fr?nkel 是一名資深程序員,擁有近二十年的Java開發經歷。他在幾年前開始學習Kotlin,在此之后,每當他再使用Java時,總會思考為什么自己寫的Java代碼,看起來不如Kotlin那么優雅,并且發現Java缺少一些可以提升代碼可讀性、表現力和可維護性的功能。對此,Nicolas Fr?nkel以“Kotlin開發者”身份總結了他認為Java缺少的特性:
· 不可變引用 (Immutable References)
· 空安全 (Null Safety)
· 擴展函數 (Extension Function)
· 具體化的泛型 (Reified Generics)
1.不可變引用 (Immutable References)
雖然Java允許開發者定義不可變引用,但這不是強制性的。因為默認情況下,引用是可變的,但大多數Java代碼并沒有利用不可變引用。
Kotlin不會讓開發者選擇:每個屬性和局部變量都需要定義為a val或a var。另外,Kotlin不支持重新分配方法參數。
2.空安全(Null Safety)
在Java中,無法知道變量是否為null。基于此,Java 8引入了Optional類型。從Java 8開始,返回Optional意味著基礎值可以是null;返回另一種類型則意味著不是。
Optional
顯然,有些庫專注于特定的IDE。此外,庫之間幾乎不兼容。而且可供使用的庫太多了,以至于經常有人會詢問該使用哪一個。
最后,在Java中使用可空性庫是可選的。而Kotlin則要求每種類型都可以為空或不可為空。
val nonNullable: String = computeNonNullableString()val nullable: String? = computeNullableString()
3.擴展函數 (Extension Function)
對于以下這段 Java 代碼:
class StringUtils {
private StringUtils() {}
static String capitalize(String string) {
return string.substring(0, 1).toUpperCase()
+ string.substring(1);
}
}String string = randomString();
String capitalizedString = StringUtils.capitalize(string);
可使用Kotlin的擴展函數特性重寫為:
fun String.capitalize2(): String {
return substring(0, 1).uppercase() + substring(1);
}val string = randomString()val capitalizedString = string.capitalize2()
Kotlin提供了使用新功能擴展類或接口的能力,而無需從類繼承或使用Decorator等設計模式。開發者可以通過名為 extensions 的特殊聲明來實現它。
例如,開發者可以為無法修改的第三方庫中的類或接口編寫新函數。這些函數可以以常見的方式進行調用,就好像它們是原始類的方法一樣。這種機制稱為擴展函數。
4.具體化的泛型 (Reified Generics)
舉個例子,如何從值的容器中獲取類型化的值。下面是Spring的示例:
org/springframework/beans/factory/BeanFactory.java
public interface BeanFactory {
<T> T getBean(Class<T> requiredType);
}
開發者添加了一個Class<T>參數,以便能夠知道方法體中的類型。但如果Java已經具體化了泛型,那就可以這樣寫:
public interface BeanFactory {
<T> T getBean();
}
如果 Kotlin 已經具體化了泛型:
interface BeanFactory { fun <T> getBean(): T
}
并調用函數:
val factory = getBeanFactory()val anyBean = getBean<Any>()
Nicolas Fr?nkel表示,Kotlin已成為他在JVM上的首選編程語言,至于Java,只有在必要的時候才會使用。更多時候,他們更傾向于使用基于Java的更高效的專業化低代碼平臺,以避免大量繁瑣的底層代碼帶來的工作量。
掃碼添加捷碼微信入群~已有6000+智慧城市/AloT/IT行業精英入群交流,入群即得《Java核心技術電子書》
無代碼開發平臺是什么?助力"人人都是開發者"的神奇工具! 閱讀556次
2022年 閱讀944次
向開發者開放免費注冊!“遠眺捷碼”提供一站式軟件快速開發平臺 閱讀1341次
公民開發者應用是應用開發的未來(低代碼與無代碼) 閱讀884次
點擊“立即申請”即可成為捷碼客戶,將享受捷碼終身技術咨詢服務,和遠程技術支持服務。