美文网首页禅与计算机程序设计艺术Kotlin我的kotlin学习记录
Kotlin尬*学 靠直觉写出实现却不知其所以然

Kotlin尬*学 靠直觉写出实现却不知其所以然

作者: 橘子周二 | 来源:发表于2017-12-14 16:39 被阅读86次

    不废话,上来就是痛点:
    先看一下按照demo实例,通俗来说就未做封装

    fun get(url:String):Weather?{
            val json = URL(url).readText()
            var t:Weather = Gson().fromJson(json,Weather::class.java)
            return t
        }
    

    看到这一段代码,起初我只是想简单封装一下,达到根据范型解析的目的。
    但是我发现,kotlin对范型做了更严格的约束,不能模糊范型。范型 T 不能直接获取class。
    最后在stackoverflow上找到答案,配合使用 inline 和 reified (这样讲真是一点没水准 汗颜)
    并且只能用于具体方法,且不可传递。
    我凭直觉写出了下面代码,但是却无法合理的解释inline 嵌套后 的编译原理。
    目前我没有查到可用的资料,后续会继续关注着,了该了再来补上
    目前代码如下:

    
        inline fun <reified J> fromJson(json: String): J {
             var t: J = Gson().fromJson(json, J::class.java)
             return t
          }
    
        inline fun <reified C> execute(url: String): C {
            val json = URL(url).readText()
            var t: C = fromJson(json)
            return t
        }
    
    

    如果恰巧您看到了这篇文章,又有资料的话,请你一定要在下方评论告知。多谢!


    END

    相关文章

      网友评论

        本文标题:Kotlin尬*学 靠直觉写出实现却不知其所以然

        本文链接:https://www.haomeiwen.com/subject/sivkwxtx.html