如何在Kotlin中使用get()定义类类型属性

时间:2017-12-22 08:55:48

标签: android kotlin kotlin-interop

如何使用 Kotlin 中的get()定义一个属性,它返回一个类,我在下面尝试,但它没有编译

val targetActivity: Class<?>
    get() = MyActivity.class

3 个答案:

答案 0 :(得分:4)

您可以使用Class References

  

最基本的反射功能是获取Kotlin类的运行时引用。要获得对静态已知Kotlin类的引用,可以使用类

文字语法:

val c = MyClass::class

或使用 Class<*> 代替 Class<?>

val targetActivity: Class<*>
get() = MyActivity::class

答案 1 :(得分:3)

请注意,在Kotlin中您必须使用star projection,问号<?>将无效;也可以像这样使用class references

val targetActivity: KClass<*>
    get() = MyActivity::class

如果您想拥有Java Class,请使用.java属性:MyActivity::class.java

答案 2 :(得分:1)

在获得Kotlin KClass以返回Java类

之后,您需要使用.java
val targetActivity: Class<*>
  get() = MyActivity::class.java

或者,如果您想更具体地了解返回类型

val targetActivity: Class<MyActivity>
  get() = MyActivity::class.java