Hello Kotlin
- 輕量級:這一點對於Android來說非常重要。項目所需要的庫應該儘可能的小。Android對於方法數量有嚴格的限制,Kotlin只額外增加了大約6000個方法。
- 互操作:Kotlin可與Java語言無縫通信。這意味着我們可以在Kotlin代碼中使用任何已有的Java庫;因此,即便這門語言還很年輕,但卻已經可以使用成百上千的庫了。除此之外,Kotlin代碼還可以爲Java代碼所用,這意味着我們可以使用這兩種語言來構建軟件。你可以使用Kotlin開發新特性,同時使用Java實現代碼基的其他部分。
- 強類型:我們很少需要在代碼中指定類型,因爲編譯器可以在絕大多數情況下推斷出變量或是函數返回值的類型。這樣就能獲得兩個好處:簡潔與安全。
- Null安全:Java最大的一個問題就是null。如果沒有對變量或是參數進行null判斷,那麼程序當中就有可能拋出大量的NullPointerException,然而在編碼時這些又是難以檢測到的。Kotlin使用了顯式的null,這會強制我們在必要時進行null檢查。
- 更多特性可見官網
環境配置
項目的創建與配置
package com.steveyg.hellokotlin;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
package com.steveyg.hellokotlin
import android.os.Bundle
import android.support.design.widget.FloatingActionButton
import android.support.design.widget.Snackbar
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar
import android.view.View
import android.view.Menu
import android.view.MenuItem
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
在轉換之後,Android Studio會提示Kotlin not configured,此時雖然可以編譯成功,但是kotlin是無效的,點擊Configure,根據自己的需要選擇需要配置的module即可
第一行代碼hello world
apply plugin: 'kotlin-android-extensions'
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
import kotlinx.android.synthetic.main.content_main.*
textview.text = "hello world";
兼容Java
1)Kotlin調用Java
package com.steveyg.hellokotlin.java;
public class Demo {
public String getType(){
return "Java";
}
}
然後在MainActivity.kt中使用對這個類型的對象進行操作 var demo = Demo();
textview.text = demo.type;
能夠看到,kotlin能夠直接使用java的內容,同時還對getset方法進行了處理,雖然在Demo對象中沒有type這個屬性,但是檢測到了getType方法,就自動處理爲type這個屬性,其他的方法名(不含getset)能夠正常使用不會處理。對工程進行編譯,可以看到內容如下圖
2)Java調用kotlin
package com.steveyg.hellokotlin.kotlin
class KotlinDemo {
fun getType(): String{
return "Kotlin";
}
}
public String getKotlinType(){
return new KotlinDemo().getType();
}
然後再在MainActivity中進行調用textview.text = demo.kotlinType;
再次編譯,結果見下圖