對(duì)于近兩年Android開發(fā)中出現(xiàn)的一些新技術(shù)比如RxJava献起、React Native、Retrofit祷杈、HotFix等斑司,在實(shí)際開發(fā)中已經(jīng)使用的比較普遍,就個(gè)人而言但汞,這些接觸的也不算少了宿刮,但Kotlin并沒有在實(shí)際開發(fā)中使用過互站,就自己練著玩了一下,大神繞過~
一 僵缺、簡(jiǎn)介
Kotlin 是一個(gè)基于 JVM 的新的編程語(yǔ)言胡桃,由JetBrains開發(fā)。JetBrains磕潮,作為目前廣受歡迎的 Java IDE IntelliJ 的提供商翠胰,在 Apache 許可下已經(jīng)開源其Kotlin 編程語(yǔ)言。
Kotlin可以理解為類似于iOS的Swift揉抵。其主要特性就是:
1.輕量級(jí):Android對(duì)于方法數(shù)量有嚴(yán)格的限制,Kotlin只額外增加了大約6000個(gè)方法嗤疯。
2.互操作:Kotlin可與Java語(yǔ)言無(wú)縫通信冤今。這意味著我們可以在Kotlin代碼中使用任何已有的Java庫(kù);因此茂缚,即便這門語(yǔ)言還很年輕戏罢,但卻已經(jīng)可以使用成百上千的庫(kù)了。除此之外脚囊,Kotlin代碼還可以為Java代碼所用龟糕,這意味著我們可以使用這兩種語(yǔ)言來構(gòu)建軟件。你可以使用 Kotlin開發(fā)新特性悔耘,同時(shí)使用Java實(shí)現(xiàn)代碼基的其他部分讲岁。
3.強(qiáng)類型:我們很少需要在代碼中指定類型,因?yàn)榫幾g器可以在絕大多數(shù)情況下推斷出變量或是函數(shù)返回值的類型衬以。這樣就能獲得兩個(gè)好處:簡(jiǎn)潔與安全缓艳。
4.Null安全:Java最常見的一個(gè)問題就是null浅蚪。如果沒有對(duì)變量或是參數(shù)進(jìn)行null判斷膝昆,那么程序當(dāng)中就有可能拋出大量的 NullPointerException固耘,然而在編碼時(shí)這些又是難以檢測(cè)到的旭旭。Kotlin使用了顯式的null荒适,這會(huì)強(qiáng)制我們?cè)诒匾獣r(shí)進(jìn)行null檢查
Kotlin官網(wǎng)
l Kotlin-github地址
二 盔粹、Android Studio配置
1.下載插件
Settings -> plugins -> BrowseRepositories中搜索“Kotlin”夯接,然后安裝Kotlin和Kotlin Extension舌菜。
2.使用Kotlin創(chuàng)建Kotlin File/Class或者是Kotlin Activity
重啟Android Studio后冯勉,在任意一個(gè)包下右鍵New , 會(huì)發(fā)現(xiàn)多了一個(gè)"Kotlin File/Class" 和 "Kotlin Activity"澈蚌。"Kotlin File/Class"即 Kotlin類或者文件"Kotlin Activity"即 Kotlin的Activity類。
3.第一次創(chuàng)建Kotlin類后會(huì)彈出配置彈窗灼狰,點(diǎn)擊進(jìn)入配置頁(yè)面惜浅。
4.最后會(huì)進(jìn)入到build.gradle文件下。你會(huì)發(fā)現(xiàn)app下的build.gradle和根目錄下的build.gradle文件都會(huì)出現(xiàn)變化伏嗜。
buildscript {
ext.kotlin_version = '1.1.2-4'
ext.support_version = '23.1.1'
ext.anko_version = '0.8.2'
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
app目錄下的build.gradle:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
...
}
lintOptions {
abortOnError false
}
buildTypes {
debug {
...
}
release {
...
}
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
compile 'com.android.support:support-v4:25.3.1'
compile 'com.github.bumptech.glide:glide:3.6.1'
compile 'com.jph.takephoto:takephoto_library:4.0.3'
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile "org.jetbrains.anko:anko-common:$anko_version"
}
repositories {
mavenCentral()
}
三 坛悉、基本使用示例
就先對(duì)比一下java文件與kotlin類文件(以一個(gè)bean文件示例)
java文件:
public class Person {
private String name;? //姓名
private int age;? ? ? //年齡
private int sex;? ? //性別? 1伐厌、男? ? 2、女
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", sex=" + sex +
'}';
}
}
對(duì)應(yīng)的Kotlin文件:
class Person {
var name: String? = null? //姓名
var age: Int = 0? ? ? //年齡
var sex: Int = 0? ? //性別? 1裸影、男? ? 2挣轨、女
override fun toString(): String {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", sex=" + sex +
'}'
}
}
具體的關(guān)于Kotlin基本數(shù)據(jù)類型、語(yǔ)法格式及使用轩猩,會(huì)在接下來的文章中示例卷扮,謝謝!