Kotlin新手學習教學路程

原始接口代碼:
public @interface ActivityScoped {
}

Kotlin接口代碼:

annotation class ActivityScoped

原始實現方法:

@Override
void inject(DaggerApplication instance);
AppComponent.Builder application(Application application);
Kotlin實現方法:
override fun inject(instance: DaggerApplication)
fun application(application: Application): AppComponent.Builder

1.實力化類用:冒號連接類

2.void換成fun

原始定義控件:

ImageView mPlayingUserAvatar;

Kotlin定義控件:

internal var mPlayingUserAvatar: ImageView? = null

1.internal表示定義域

2.所有變量都需要加var

3.實力化類變量:類

4.?問號表示是否爲空 

原始代碼定義靜態:

private static final int CACHE_STRATEGY_FAST = 1; 

Kotlin定義靜態:

companion object {
    var mHandler: Handler? = null

    private val CACHE_STRATEGY_FAST = 1  //極速
    private val CACHE_STRATEGY_SMOOTH = 2  //流暢
    private val CACHE_STRATEGY_AUTO = 3  //自動
    private val CACHE_TIME_FAST = 1.0f
    private val CACHE_TIME_SMOOTH = 5.0f

}

1.靜態static標識的都加到companion object 進行單例

2.定義變量類型的都用var換掉

原始實力化方法:

private Map<String, String> mUrlMap = new HashMap<>();

Kotlin實力化方法:

private val mUrlMap = HashMap<String, String>()

1.直接變量等於個要實力化的

原始初始化變量:

private int mCacheStrategy;
private String mPlayUrl;

Kotlin初始化變量:

private var mCacheStrategy: Int = 0
private var mPlayUrl: String? = null

1.前面要加var 

2.字符串string類型的需要加?好判斷是否爲空然後賦值null

原始寫一個有返回值的方法:

public int getDeviceId() {
    return mEntity.getId();
}

Kotlin寫一個有返回值的方法:

val deviceId: Int
    get() = mEntity!!.id

1.val來表示新建的。無論是變量還是方法都需要加

2.get類型的方法把get去掉第一個字母小寫後當作方法名給個方法名稱後冒號跟返回值類型

3.get()=後面加上要返回的數據

4.如果需要在get()裏面加邏輯處理,需要get(){在這裏面加然後值用return 返回出來}

5.寫方法時候public void 可以用fun替換掉

6.所有類型值賦值時候都可以用var定義它

7.!!表示第一次加載可以爲空,實例化的類後面調用裏面的方法時候都需要加!!.


原始switch使用多條件判斷

switch (action) {
    case AppConstant.UP:
        mGamePresenter.up();
        break;
    case AppConstant.DOWN:
        mGamePresenter.down();
        break;
}
Kotlin用when替代它:
when (action) {
    AppConstant.UP -> mGamePresenter!!.up()
    AppConstant.DOWN -> mGamePresenter!!.down()
  
}

1.!!表示第一次加載可以爲空,實例化的類後面調用裏面的方法時候都需要加!!.

2.最後不需要加;

綜合方法對比   原始:
public void onFinish() {
    CountDownTimer timer = mTimerMap.get(action);
    if (timer != null) {
        timer.cancel();
    }
}

Kotlin:

 fun onFinish() {
    val timer = mTimerMap[action]
    timer?.cancel()
}

1.public void 可以用fun替換

2.當需要賦值時候用var可以直接根據後面賦值類型轉換成對應的,所以所有賦值的變量都可以用var來定義

3.?問號符號對應着的意思是判斷timer是否爲空

4.get方法可以變成中括號代替和數組一樣


原始需要強轉對象賦值代碼:

ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);

Kotlin需要強轉對象賦值代碼:

val am = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
1.強轉改成在後面加上as 後面加上要強轉的類型


原始開啓線程:

new Thread(new Runnable() {
    @Override
    public void run() {
        while (showDanmaku) {
            int time = new Random().nextInt(300);
            
            try {
                Thread.sleep(time);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}).start();

Kotlin開啓線程:

Thread(Runnable {
    while (showDanmaku) {
        val time = Random().nextInt(300)
   
        try {
            Thread.sleep(time.toLong())
        } catch (e: InterruptedException) {
            e.printStackTrace()
        }

    }
}).start()

1.不需要實例化new

2.不需要實現run()方法


後續還有偶











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章