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工作正常。谢谢