1

How to define a property using get() in Kotlin which returns a class, I was trying below, but it's not compiling

val targetActivity: Class<?>
    get() = MyActivity.class
Akhil
  • 6,667
  • 4
  • 31
  • 61

3 Answers3

4

You can use Class References

The most basic reflection feature is getting the runtime reference to a Kotlin class. To obtain the reference to a statically known Kotlin class, you can use the class

literal syntax:

val c = MyClass::class

or this use Class<*> instead of Class<?>

val targetActivity: Class<*>
get() = MyActivity::class
Goku
  • 9,102
  • 8
  • 50
  • 81
3

Be aware that in Kotlin you have to use star projection, the question mark <?> won’t work; also use class references like this:

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

If you want to have a Java Class, use the .java property: MyActivity::class.java

s1m0nw1
  • 76,759
  • 17
  • 167
  • 196
1

you need to use .java after getting a Kotlin KClass to return a Java Class

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

Or, if you want to be more specific about the return type

val targetActivity: Class<MyActivity>
  get() = MyActivity::class.java
Bruce Lowe
  • 6,063
  • 1
  • 36
  • 47