java 指令重拍_我发现我的Java重拍了!
java 指令重拍
在一月份,我寫了一篇文章,介紹了一些我希望在Java語言中看到的變化,這些變化會(huì)讓我更加喜歡它(并使它變得更現(xiàn)代)。 很多人建議使用許多JVM語言,但我很大程度上不予理會(huì),因?yàn)檫@不是我想要的。 我希望Java在這些方面有所不同,因?yàn)槲也惶赡苷f服工作場(chǎng)所讓我使用Java以外的東西。 此外,建議的大多數(shù)JVM語言都具有一些語法思想,這些思想很難為我所理解。
但…
但是,后來我找到了Kotlin。 它是由IntelliJ,PyCharm和其他一些IDE和工具的創(chuàng)建者JetBrains制造的JVM語言。 在大多數(shù)情況下,我覺得這些家伙讀懂了我想從我的語言中得到什么。 他們錯(cuò)過了我的帖子中的一些內(nèi)容,但是卻有很多我忘記或什至沒有想到的內(nèi)容。
與我的舊清單比較
首先,我們將把他們做了什么和不需要做的事情與我以前的帖子中的列表進(jìn)行比較。
擺脫分號(hào)
Kotlin并非沒有分號(hào),但是在極少數(shù)情況下需要它們。 在大多數(shù)情況下,您可以在行尾省略分號(hào)。
卸下花括號(hào)
可悲的是,他們沒有這樣做。 我住
運(yùn)算符重載
是的,他們有很多操作員重載。 與Python不同的是,它們具有遞增和遞減運(yùn)算符,正負(fù)標(biāo)記和否定運(yùn)算符(例如python的__bool__() ,但具有自動(dòng)轉(zhuǎn)換功能;相反,它們還具有用于創(chuàng)建一系列對(duì)象的運(yùn)算符( 1..3 ),但兩個(gè)數(shù)字在Kotlin中都應(yīng)包含在內(nèi),盡管通常更易于閱讀,但在很多時(shí)候都可以進(jìn)行更多的中間計(jì)算,這就是為什么許多語言都希望將末尾包括在內(nèi)。
最后,您定義自己的“運(yùn)算符”,但它們必須是布爾值中綴運(yùn)算符。 實(shí)際上,您沒有定義自己的運(yùn)算符,因?yàn)樵谑褂靡粋€(gè)參數(shù)調(diào)用方法時(shí),該語言提供了一點(diǎn)語法上的好處。 對(duì)象a的任何方法md (通過參數(shù)b調(diào)用)(即a.md(b) )都可以更簡(jiǎn)單地寫為a md b 。
元組和/或數(shù)據(jù)結(jié)構(gòu)
從某種意義上說,Kotlin同時(shí)具有這兩種功能,但從某種意義上講,兩者都沒有。
它們有一個(gè)名為Pair的類,可以用作2元組,并且它們有一個(gè)很好的語法糖系統(tǒng),可以將任何類基本上也轉(zhuǎn)換為已命名的元組。 您可以通過字段的位置或字段名稱來引用它們。 有關(guān)更多信息,請(qǐng)查看其有關(guān)Multi-Declarations的文檔。
至于數(shù)據(jù)結(jié)構(gòu),他們采用了帶有屬性的類路由,這很好而且很花哨。 但是,關(guān)于它們的數(shù)據(jù)結(jié)構(gòu)類的真正好處是定義它們的簡(jiǎn)單性。 一個(gè)示例聲明是data class User(val name: String, val age: Int) 。 這不僅為您設(shè)置了所有屬性,而且還自動(dòng)定義了equals() , hashCode() , toString() (形式為"User(name=John, age=42)" ))和一個(gè)特殊的copy()功能,這是所討論此處 。
物產(chǎn)
Kotlin當(dāng)然具有屬性。 實(shí)際上,使用屬性比擁有簡(jiǎn)單的公共字段要容易。 它們的屬性為您自動(dòng)創(chuàng)建后備字段,其名稱與屬性相同,但下劃線開頭。
默認(rèn)為public
說到方法,情況就是這樣,我很高興。 好極了!
類型對(duì)象
是的,他們已經(jīng)刪除了對(duì)原語的直接訪問權(quán)限,并且您僅使用類型對(duì)象(由于使用了空安全措施,因此它比平時(shí)更安全,我將在稍后介紹。
列表,字典和集合文字
Ko,Kotlin沒有收集集合文字。 令人遺憾的是,但是,借助Kotlin的某些功能,您可能會(huì)創(chuàng)造出非常簡(jiǎn)單的方法來內(nèi)聯(lián)他們的創(chuàng)作。
我忘記的事情
這些是我知道我想用Java編寫的幾件事,但是忘了放在舊帖子中
控制流表達(dá)式
當(dāng)可以將一種語言中的控制流結(jié)構(gòu)制成表達(dá)式(返回值)時(shí),我喜歡它。 當(dāng)然,Java(和許多其他語言)具有三元運(yùn)算符,可以將if-else塊視為一種表達(dá)式,但僅限于單個(gè)“ if”檢查。 它不允許沒有其他難以理解的嵌套的“ else if”塊。
但是Kotlin不會(huì)因?yàn)閕f塊而停下來。 它們還執(zhí)行try-catch表達(dá)式和“ when”表達(dá)式(在下一節(jié)中說明)。 使用try-catch作為表達(dá)式時(shí),您可以縮短一些需要在計(jì)算周圍使用try-catch塊的分配。 所以代替
Integer a; try {a = Integer.parseInt(input); } catch(NumberFormatException e) {a = null; }你可以輸入
Integer a = try { Integer.parseInt(input); } catch (NumberFormatException e) { null; }顯然,您不需要將它們用作表達(dá)式。 您仍然可以按自己想要的方式使用它們。
模式匹配
之前提到過“ when”表達(dá)式,但是現(xiàn)在我們真的要深入探討了。它在Kotlin中用于模式匹配,并使用更簡(jiǎn)化的語法替換了switch-case塊,這些語法也可以像if-else表達(dá)式一樣工作,但用途更廣泛。 它可以與切換塊類似地起作用,因?yàn)樗梢岳^續(xù)到下一個(gè)“ case”,但是必須使用顯式的continue命令來完成(現(xiàn)在大約是時(shí)候“ switch”的默認(rèn)設(shè)置為不繼續(xù)流動(dòng),但即使這樣也不行)不需要那么多的東西,因?yàn)槟梢院?jiǎn)單地用逗號(hào)分隔多個(gè)可能性,使所有可能性都采用同一分支。請(qǐng)?jiān)诖颂幉榭?。
它不是某些功能語言定義的模式匹配,但據(jù)我所知,這是您可以在OO語言中做到的最好的選擇。 我也傷心地報(bào)告說,盡管有體面的模式匹配,這是偉大的遞歸函數(shù),Kotlin似乎并不具有尾調(diào)用優(yōu)化。 然而(?)。 Kotlin還很年輕。 也許它將使它落在某處。
類擴(kuò)展
無檢查異常
我當(dāng)然不介意拋出可能的異常的聲明,也許是編譯器警告讓我們知道我們沒有在處理或聲明可能的異常被拋出,但是我當(dāng)然不想被強(qiáng)迫“處理”。 ”實(shí)際上不會(huì)引發(fā)的異常。 所以,我很高興Kotlin沒有任何東西。
命名和默認(rèn)參數(shù)
當(dāng)您可以為參數(shù)使用默認(rèn)值時(shí),重載函數(shù)幾乎是沒有意義的;當(dāng)參數(shù)的含義不明顯時(shí),能夠在傳遞參數(shù)時(shí)命名參數(shù)可以使函數(shù)調(diào)用更加容易。
我從未意識(shí)到的事情
現(xiàn)在,我將列出Kotlin提供的一些最酷的東西,我什至從未意識(shí)到這是一個(gè)好主意。
空安全
除非對(duì)象的類型明確聲明其為null,否則不能將其設(shè)置為null。 在Kotlin中, List類型的對(duì)象不能為null,但是,如果它是List?類型的List? , 它可以。 這以及一些簡(jiǎn)單的語法使您可以安全地處理可為空的對(duì)象,從而使語言變得更加令人愉悅,幾乎消除了NPE的可能性。
作為表達(dá)式的功能
這不是一個(gè)大問題,但是它可以減少簡(jiǎn)單的功能,以清晰的方式占用更少的空間。 如果函數(shù)的主體只是一個(gè)表達(dá)式(無論是簡(jiǎn)單表達(dá)式還是“ when”表達(dá)式之類的復(fù)雜表達(dá)式),則可以跳過主體周圍的花括號(hào),而在其前面加上= 。 例如:
fun powerOf(number: Int, exponent: Int): Int {return Math.pow(number, exponent) }可以改為:
fun powerOf(number: Int, exponent: Int): Int = Math.pow(number, exponent)這沒什么大不了的,但是我喜歡它不僅可以讓您切換大括號(hào)= ,而且還可以讓您跳過對(duì)return語句的使用。
奧托羅
所以,這就是我對(duì)Kotlin的愛。 您應(yīng)該在他們的官方頁面上查看一下,并告訴我您的想法。 我對(duì)此感到非常興奮,并計(jì)劃在完成當(dāng)前項(xiàng)目后切換到該項(xiàng)目,您可以期待下周在我的帖子中聽到一些信息。
翻譯自: https://www.javacodegeeks.com/2015/03/i-found-my-java-remake.html
java 指令重拍
總結(jié)
以上是生活随笔為你收集整理的java 指令重拍_我发现我的Java重拍了!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏大全电脑仙侠(好玩的仙侠类网游电脑)
- 下一篇: 符文工房结晶(符文工房5合成水晶)