Kotlin 有==对象吗

Kotlin 有==对象吗,kotlin,Kotlin,kotlin中的以下代码: Any().javaClass 值为java.lang.Object。这是否意味着Any和Object是同一类?他们之间有什么关系?没有 从 (强调矿山) Kotlin中的所有类都有一个公共超类Any,这是默认值 对于未声明超类型的类,super: 类示例//隐式继承自任何 Any不是java.lang.Object;特别是,它没有任何 除equals()、hashCode()和toString()以外的成员。请 有关更多详细信息,请参阅Java互操作性部分 此外,

kotlin中的以下代码:

Any().javaClass
值为
java.lang.Object
。这是否意味着
Any
Object
是同一类?他们之间有什么关系?

没有

从 (强调矿山)

Kotlin中的所有类都有一个公共超类
Any
,这是默认值 对于未声明超类型的类,super:

类示例//隐式继承自任何

Any
不是
java.lang.Object
;特别是,它没有任何 除
equals()
hashCode()
toString()以外的成员。请
有关更多详细信息,请参阅Java互操作性部分

此外,在有关映射类型的部分中,我们发现:

Kotlin专门处理一些Java类型。这些类型不是从中加载的 Java“原样”,但映射到相应的Kotlin类型。映射 只有在编译时才重要,运行时表示形式仍然有效 不变。Java的原语类型映射到相应的Kotlin 类型(记住平台类型):

java.lang.Object
kotlin.Any

这表示在运行时
java.lang.Object
kotlin.Any的处理方式相同。但是
还意味着该类型是平台类型,这意味着禁用空检查等

Java中的任何引用都可能为null,这使得Kotlin的 严格的空安全对于来自Java的对象是不切实际的。种类 Java声明在Kotlin中特别处理,称为平台 类型。对此类类型放宽了空检查,以确保安全性 对于它们,与Java中的相同(请参阅下面的更多内容)

当我们对平台类型的变量调用方法时,Kotlin不会 在编译时发出nullability错误,但调用可能在编译时失败 运行时,由于空指针异常或Kotlin 生成以防止空值传播:


Kotlin编译器将
Kotlin.Any
java.lang.Object
视为两种不同的类型,但在运行时,它们用相同的
java.lang.Object
类表示

javaClass
属性返回实例的运行时类,因此在这两种情况下得到相同的
java.lang.Object


还有其他类型在编译时不同,但在运行时相同;它们列在文档的一节中。

事实上,Kotlin lang方面没有
java.lang.Object
,因此您当然不能说
Any
Object
。你只能说
Any
取代了Kotlin中的
Object

“Any”
类似于
java.lang.Object
:Kotlin中所有类的超类。

完全相同。它只是阻止Kotlin不想要的属性:

fun main() {
    val any = Any()//java Object
    val obj = Object()//java Object
    println(any::class)//Object class
    println(obj::class)//Object class
}
斯马利:

fun test(aaaaa: Any) {
}

e、 i.查阅这篇文章:你能解释一下它们之间的区别吗?为什么任何is对象的java类都是这样的?
Kotlin生成的以防止null传播到
Propagto?any不声明wait()、notify()、notifyAll()这使得它不可能像普通Java对象那样用作锁。@dkarmazi您可以将其强制转换为
Java.lang.object
,然后您就可以对其调用这些方法。是否有任何支持泛型的方法?您也可以强制转换为任何to对象,以何种方式它是
模拟的?它在编译时有点不同。。。
  public final static test(Ljava/lang/Object;)V
    // annotable parameter count: 1 (visible)
    // annotable parameter count: 1 (invisible)
    @Lorg/jetbrains/annotations/NotNull;() // invisible, parameter 0
   L0
    ALOAD 0
    LDC "aaaaa"
    INVOKESTATIC kotlin/jvm/internal/Intrinsics.checkNotNullParameter (Ljava/lang/Object;Ljava/lang/String;)V
   L1
    LINENUMBER 4 L1
    RETURN
   L2
    LOCALVARIABLE aaaaa Ljava/lang/Object; L0 L2 0
    MAXSTACK = 2
    MAXLOCALS = 1

  @Lkotlin/Metadata;(mv={1, 4, 2}, bv={1, 0, 3}, k=2, d1={"\u0000\u000e\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u0000\n\u0000\u001a\u000e\u0010\u0000\u001a\u00020\u00012\u0006\u0010\u0002\u001a\u00020\u0003\u00a8\u0006\u0004"}, d2={"test", "", "aaaaa", "", "SPWrapper.app"})
  // compiled from: T.kt
}