Kotlin 学习记录(1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010844304/article/details/81487782

前言

发现gitHub上各路大神都开始使用Kotlin编写项目了。公司的项目也有部分开始使用Kotlin。所以我也要跟上潮流,首先根据菜鸟教程学习了基础,然后又看了《Kotlin for Android》,结果没有记得多少,看着能认识,用的时候不记得了。还是实践才最有作用,我目前是准备将百度语音的demo,改成kotlin版本,下面是记录一下改写中遇到的问题

一、数据类型的强转

通常,如果转换是不可能的,转换操作符会抛出一个异常。因此,我们称之为不安全的。 Kotlin 中的不安全转换由中缀操作符 as(参见operator precedence)完成:

val s : String = y as String

二、java中静态变量的转化

我们可以在类中的伴生对象中这样写

companion object {
        private var isOfflinEnginLoaded = false
        private var isInited = false
        private val TAG = "MyRecognizer"
    }

静态方法也同样写到伴生对象中

companion object {
        private val ERROR_NONE: Int = 0
        fun parseJson(jsonStr: String): RecogResult {
            var result = RecogResult()
            try {
                val json = JSONObject(jsonStr)
                val error = json.optInt("error")
                result.error = error
                result.subError = json.optInt("sub_error")
                result.resultType = json.optString("result_type")
                if (error == ERROR_NONE) {
                    result.origalResult = json.optString("origin_result")
                    val arr = json.optJSONArray("results_recognition")
                    if(arr != null) {
                        val size = arr.length()
                        var recogs = arrayOfNulls<String>(size)

                        for (i in 0 until size) {
                            recogs[i] = arr.optString(i)
                        }
                        result.resultRecognition = recogs

                    }
                }
            } catch (e: JSONException) {
                e.printStackTrace()
            }
            return result
        }

三、工具类的编写

这里就可以直接新建一个kotlin的Object,如下方的Logger对象

object Logger {

    private val TAG = "Logger"

    private val INFO = "INFO"

    private val ERROR = "ERROR"

    private var ENABLE = true

    private var handler: Handler? = null

    fun info(message: String){
        info(TAG, message)
    }

    fun info(tag: String, message: String) {
        log(INFO, tag, message)
    }

    fun error(message: String) {
        error(TAG, message)
    }

    fun error(tag: String, message: String) {
        log(ERROR, tag, message)
    }

    fun setHandler(handler: Handler) {
        Logger.handler = handler
    }

    private fun log(level: String, tag: String, message: String) {
        if (!ENABLE) return

        if (level == INFO)
            Log.i(tag, message)
        else if (level == ERROR)
            Log.e(tag, message)

        if (handler != null) {
            val msg = Message.obtain()
            msg.obj = "[$level]$message\n"
            handler!!.sendMessage(msg)
        }
    }

    fun setEnable(isEnable: Boolean) {
        ENABLE = isEnable
    }
}

四、定义一个变量初始值为null

var description: String? = null

五、Kotlin中的数组

var titles : Array<String> = arrayOf("title")
var ids: IntArray = intArrayOf(1)
var byteArray : ByteArray = byteArrayOf("s".toByte())
var longArrat: LongArray = longArrayOf(13L) 

六、抛出异常

@Throws(FileNotFoundException::class)
    constructor(inputS: String) : this() {
        inputStream = FileInputStream(inputS)
    }

猜你喜欢

转载自blog.csdn.net/u010844304/article/details/81487782
今日推荐