1

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

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

3 回答 3

4

您可以使用Class References

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

字面语法:

val c = MyClass::class

或者这个使用Class<*>而不是Class<?>

val targetActivity: Class<*>
get() = MyActivity::class
于 2017-12-22T09:00:32.080 回答
3

请注意,在 Kotlin 中您必须使用星形投影,问号<?>不起作用;也使用这样的类引用

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

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

于 2017-12-22T09:02:23.527 回答
1

您需要在获得 Kotlin KClass 后使用 .java 来返回 Java 类

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

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

val targetActivity: Class<MyActivity>
  get() = MyActivity::class.java
于 2017-12-22T09:09:10.840 回答