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 AMvalmarstran
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