【问题标题】:Kotlin requires explicit cast to ObjectKotlin 需要显式转换为 Object
【发布时间】:2018-10-19 10:24:09
【问题描述】:

我正在尝试在 Kotlin 中编写一个返回 Object 类型对象的方法。

在Java中我会简单地写成

public Object test() {
    return "Bla";
}

但是,在 Kotlin 中,这不起作用并引发错误

fun test(): Object {
    return "Bla"
}

当转换字符串 return "Bla" as Object 时,它可以工作。有趣的是,Kotlin Object 是从 java.utils 导入的,可能与 Java 代码中的 Object 不同。

为什么会这样? Kotlin 不希望你返回这样的一般对象吗?我将如何在 Kotlin 中实现这一目标?

【问题讨论】:

  • Kotlin 使用 Any
  • 可能与 Java 代码中的对象不同 - 它是相同的

标签: kotlin


【解决方案1】:

在 Kotlin 中,类型层次结构以 Any 开头:https://kotlinlang.org/docs/reference/classes.html#inheritance

你可以写:

fun test() : Any {
    return "Bla"
}

但是Any 不是Object

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-15
    • 2019-12-23
    • 1970-01-01
    • 2020-07-14
    • 2019-01-06
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    相关资源
    最近更新 更多