为什么kotlin.Char是可序列化的?(未明确定义)
为什么kotlin.Char是可序列化的?(未明确定义),kotlin,Kotlin,kotlin.Char的定义如下: public class Char private constructor() : Comparable<Char> { ... } 它是在编译字节码时添加的吗 它在任何地方都有记录吗 基本类型,如Int、Double、Char等,在JVM上以两种方式之一表示(): 只要可能,作为原语(int,double,char) 当要求为空或用作泛型类型参数时,作为相应的包装类(Integer,Double,Character) 这两种表示都是可序列
kotlin.Char
的定义如下:
public class Char private constructor() : Comparable<Char> {
...
}
- 它是在编译字节码时添加的吗
- 它在任何地方都有记录吗
- 基本类型,如
Int
、Double
、Char
等,在JVM上以两种方式之一表示():
- 只要可能,作为原语(
,int
,double
)char
- 当要求为空或用作泛型类型参数时,作为相应的包装类(
,Integer
,Double
)Character
serializable
,例如,您可以在的文档中看到
Java互操作文档中也提到了Kotlin和Java类型之间的这种映射
所以问题是,为什么Kotlin表示在源代码级别上没有可序列化的超类型?我的猜测是,它们保持平台独立,因为让它们显式实现
java.io.Serializable
将使它们直接依赖于JVM类型。基本类型,如Int
,Double
,Char
等,在JVM上以两种方式之一()表示:
- 只要可能,作为原语(
,int
,double
)char
- 当要求为空或用作泛型类型参数时,作为相应的包装类(
,Integer
,Double
)Character
serializable
,例如,您可以在的文档中看到
Java互操作文档中也提到了Kotlin和Java类型之间的这种映射
所以问题是,为什么Kotlin表示在源代码级别上没有可序列化的超类型?我的猜测是,它们保持平台独立,因为让它们显式实现java.io.Serializable
将使它们直接依赖于JVM类型
public interface Comparable<in T> {
public operator fun compareTo(other: T): Int
}
fun main(args: Array<String>) {
println('A'::class) // class kotlin.Char
println('A'::class.java) // char
println('A' is java.io.Serializable) // true
}