I have an abstract class with a subclass. I want t...
# announcements
m
I have an abstract class with a subclass. I want the subclass to define a property with type Class, but its implementation should be a subclass of
Param
. How do I define this?
Copy code
abstract class Params
Copy code
abstract class Parent {
    
    abstract val paramsClass: Class<????> // should be a class that extends Params

}
Copy code
class Subclass : Parent() {
    
    override val paramsClass = MyParams::class.java

}
Copy code
data class MyParams : Params()
l
Maybe like this?
Copy code
abstract class Params
class MyParams : Params()

abstract class Parent<T : Params> {
    abstract val paramsClass: Class<T>
}

class Subclass : Parent<MyParams>() {
    override val paramsClass = MyParams::class.java
}
d
If you don't need the concrete type:
Class<out Params>
m
thanks, the
out
keyword was what I was looking