1,Kotlin 調(diào)用Java
創(chuàng)新互聯(lián)是專業(yè)的疊彩網(wǎng)站建設(shè)公司,疊彩接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行疊彩網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!import?java.util.* fun?demo(source:?List關(guān)于getter和setter的默認(rèn)調(diào)用
import?java.util.Calendar fun?calendarDemo()?{ ????val?calendar?=?Calendar.getInstance() ????if?(calendar.firstDayOfWeek?==?Calendar.SUNDAY)?{??//?調(diào)用了getFirstDayOfWeek() ????????calendar.firstDayOfWeek?=?Calendar.MONDAY??????//?調(diào)用了?setFirstDayOfWeek() ????} ????if?(!calendar.isLenient)?{?????????????????????????//?調(diào)用了isLenient() ????????calendar.isLenient?=?true??????????????????????//?調(diào)用了setLenient() ????} }注意,如果一個(gè)java屬性只有setter,那么Kotlin就無法訪問。 Kotlin訪問java的屬性其實(shí)是默認(rèn)調(diào)用了這個(gè)屬性的getter函數(shù)
如果一個(gè)java函數(shù)是void類型的,那么kotlin調(diào)用后獲得的返回值類型是Unit
如果一個(gè)java函數(shù)名用了kotlin的關(guān)鍵字,比如:?in,?object,?is ,那么在kotlin中訪問的時(shí)候,要給函數(shù)名加上' ,
foo.`is`(bar)2,null安全和平臺(tái)類型
java中的對(duì)象很可能是null,kotlin把java對(duì)象當(dāng)做平臺(tái)類型,對(duì)其null安全要求不再那么苛刻
val?list?=?ArrayList我們不能在代碼中顯式聲明平臺(tái)類型,為了方便編譯階段檢查,我們?cè)O(shè)定以下記憶符號(hào):
T!
?意思是 "T
?或T?
",
(Mutable)Collection
?意思是 "Java collection of?T
?may be mutable or not, may be nullable or not",
Array<(out) T>!
?意思是"Java array of?T
?(or a subtype of?T
), nullable or not"
3,類型對(duì)應(yīng)關(guān)系
Java type | Kotlin type |
---|---|
byte | kotlin.Byte |
short | kotlin.Short |
int | kotlin.Int |
long | kotlin.Long |
char | kotlin.Char |
float | kotlin.Float |
double | kotlin.Double |
boolean | kotlin.Boolean |
Java type | Kotlin type |
---|---|
java.lang.Object | kotlin.Any! |
java.lang.Cloneable | kotlin.Cloneable! |
java.lang.Comparable | kotlin.Comparable! |
java.lang.Enum | kotlin.Enum! |
java.lang.Annotation | kotlin.Annotation! |
java.lang.Deprecated | kotlin.Deprecated! |
java.lang.CharSequence | kotlin.CharSequence! |
java.lang.String | kotlin.String! |
java.lang.Number | kotlin.Number! |
java.lang.Throwable | kotlin.Throwable! |
Edit Page
Java type | Kotlin type |
---|---|
java.lang.Byte | kotlin.Byte? |
java.lang.Short | kotlin.Short? |
java.lang.Integer | kotlin.Int? |
java.lang.Long | kotlin.Long? |
java.lang.Character | kotlin.Char? |
java.lang.Float | kotlin.Float? |
java.lang.Double | kotlin.Double? |
java.lang.Boolean | kotlin.Boolean? |
注意,如果java用了原始類型作為參數(shù),那么在kotlin中轉(zhuǎn)換為平臺(tái)類型,比如:List
?在kotlin中對(duì)應(yīng)?List
?
Kotlin的集合類型可以是只讀的,或者可變的,所以,跟java的集合類型對(duì)應(yīng)關(guān)系如下? (下表里面的這些Kotlin 類型都在包?kotlin.collections里
):
Java type | Kotlin read-only type | Kotlin mutable type | Loaded platform type |
---|---|---|---|
Iterator | Iterator | MutableIterator | (Mutable)Iterator |
Iterable | Iterable | MutableIterable | (Mutable)Iterable |
Collection | Collection | MutableCollection | (Mutable)Collection |
Set | Set | MutableSet | (Mutable)Set |
List | List | MutableList | (Mutable)List |
ListIterator | ListIterator | MutableListIterator | (Mutable)ListIterator |
Map | Map | MutableMap | (Mutable)Map |
Map.Entry | Map.Entry | MutableMap.MutableEntry | (Mutable)Map.(Mutable)Entry |
Java'的對(duì)應(yīng)如下:
Java type | Kotlin type |
---|---|
int[] | kotlin.IntArray! |
String[] | kotlin.Array<(out) String>! |
注意: java的static 變量不能作為kotlin?companion?對(duì)象直接訪問,必須要帶上java類型才可以,比如?java.lang.Integer.toHexString(foo)
.
參考文獻(xiàn):https://kotlinlang.org/docs/reference/java-interop.html
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。