Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 为什么函数中的类可以';不能连载吗?_Kotlin_Jvm_Gson - Fatal编程技术网

Kotlin 为什么函数中的类可以';不能连载吗?

Kotlin 为什么函数中的类可以';不能连载吗?,kotlin,jvm,gson,Kotlin,Jvm,Gson,我试着写这样的代码 object TestAPI { fun method1() { data class Param( val param: String ) println("method1:${Gson().toJson(Param("test"))}" ) } fun method2() { println("method2

我试着写这样的代码

object TestAPI {

    fun method1() {
        data class Param(
            val param: String
        )
        println("method1:${Gson().toJson(Param("test"))}" )
    }

    fun method2() {
        println("method2:${Gson().toJson(Param("test"))}" )
    }

    data class Param(
        val param: String
    )

}

fun main() {
   method1()
   method2()
}
结果是:

method1:null
method2:{"param":"test"}
我已经看过字节码了

  public final static INNERCLASS com/sola/stock/moe/sola/stock/repository/TestAPI$Param com/sola/stock/moe/sola/stock/repository/TestAPI Param
  // access flags 0x19
  public final static INNERCLASS com/sola/stock/moe/sola/stock/repository/TestAPI$method1$Param null Param
我想原因是第二行中的null

我想知道这方面的一些细节

是虫子吗

如果不是,为什么kotlin在这样的方法中设计一个类

object TestAPI {

    fun method1() {
        data class Param(
            val param: String
        )
        println("method1:${Gson().toJson(Param("test"))}" )
    }

    fun method2() {
        println("method2:${Gson().toJson(Param("test"))}" )
    }

    data class Param(
        val param: String
    )

}

fun main() {
   method1()
   method2()
}

这两个内部类之间有什么区别。

局部作用域类可能没有反射,像Gson/Jackson这样的库使用反射来序列化/反序列化对象。尝试使用不使用运行时序列化的,而在编译时创建实体。kolinx.serialization工作正常。感谢本地作用域类可能没有反射,像Gson/Jackson这样的库用于序列化/反序列化对象。请尝试使用不使用运行时序列化的,而是在编译时创建实体。kolinx.serialization工作正常。谢谢