CarlosP
02/19/2020, 10:48 AMinterface ExperimentManagerDelegateCore {
interface ExperimentManagerDelegate:ExperimentManagerDelegateCore {
I have the classes:
abstract class ExperimentManagerCore {
open var delegate: WeakReference<out ExperimentManagerDelegateCore>? = null
}
class ExperimentManager():ExperimentManagerCore() {
override var delegate: WeakReference<ExperimentManagerDelegate>? = null
}
but in ExperimentManager
I got the error:
Type of 'delegate' doesn't match the type of the overridden var-property 'public open var delegate: WeakReference? defined in ExperimentManager.ExperimentManagerCore'
I thought I would fix it with out ExperimentManagerDelegateCore
Any ideas?marstran
02/19/2020, 10:59 AMdelegate
is a var
. The setter causes the out-type to appear in an in-position (the setter's parameter).marstran
02/19/2020, 10:59 AMval
marstran
02/19/2020, 11:00 AMval
in ExperimentManagerCore
, and then override it with a var
in ExperimentManager
😛CarlosP
02/19/2020, 11:13 AMCarlosP
02/19/2020, 11:20 AMmarstran
02/19/2020, 11:31 AMExperimentManagerCore
generic. Like this:
abstract class ExperimentManagerCore<T : ExperimentManagerDelegateCore> {
open var delegate: WeakReference<T>? = null
}
class ExperimentManager() : ExperimentManagerCore<ExperimentManagerDelegate>() {
override var delegate: WeakReference<ExperimentManagerDelegate>? = null
}
CarlosP
02/19/2020, 11:52 AMCarlosP
02/19/2020, 11:53 AM