2017-07-07 111 views
-3

在我的代碼如下變量i定義,Kotlin - kotlin是否包含像java中的基類這樣的對象類?

var obj_str: Object = "NEW" as Object 

它在警告This class shouldn't be used in Kotlin. Use kotlin.Any instead

所以,我需要知道任何類似於對象在科特林或任何別的東西?

還需要知道等待方法,如wait(),notify()等在Object類中可用但不在Any中,那麼在kotlin中執行該操作?

+4

你有沒有試過, 「先前的研究」 的事情嗎?就像在任何搜索引擎中放入「kotlin any」一樣? – GhostCat

回答

7

是,Any是Kotlin類層次結構的根,就像Object是Java類層次結構的根。

換句話說,每個不可爲空的類是Kotlin中的Any的子類,並且所有類都是Any?的子類。

在JVM上使用Kotlin時,它實際上只是mappedObject,所以它們完全一樣。

+1

Kotlin實際上並不具有不可爲空的_classes_;它具有不可爲空的_types_。 [[KType]](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-type/index.html)有一個[isMarkedNullable](https://kotlinlang.org/) api/latest/jvm/stdlib/kotlin.reflect/-k -type/is-marked-nullable.html)屬性,['KClass'](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin .reflect/-k-class /)不。即每個類都是Kotlin中「Any」的子類,所有類型都是「Any?」的子類型。 – mfulton26

0

您的代碼可以這樣寫。

var obj_str: Any = "NEW" //You don't need to cast it

var obj_str: Any? = "NEW" //If obj_str could be null