Steve
03/17/2020, 4:52 PMSteve
03/17/2020, 4:52 PMsealed class ValidationResult {
class ValidOnline: ValidationResult()
class InvalidOnline: ValidationResult()
class ValidOffline: ValidationResult()
class InvalidOffline: ValidationResult()
}
Steve
03/17/2020, 4:54 PMsealed class ValidationResult {
sealed class Online: ValidationResult() {
class Valid
class Invalid
}
sealed class Offline: ValidationResult() {
class Valid
class Invalid
}
}
Tsvetan Ovedenski
03/17/2020, 5:13 PMValid
and Invalid
should extend the appropriate sealed class. This (surprisingly?) typechecks:
sealed class ValidationResult {
sealed class Online : ValidationResult() {
object Valid : Online()
object Invalid : Online()
}
sealed class Offline : ValidationResult() {
object Valid : Offline()
object Invalid : Offline()
}
}
interface Validator {
fun validate(): ValidationResult
}
object OnlineValidator : Validator {
override fun validate(): <http://ValidationResult.Online|ValidationResult.Online> {
return ValidationResult.Online.Invalid
}
}
object OfflineValidator : Validator {
override fun validate(): ValidationResult.Offline = TODO()
}
Tsvetan Ovedenski
03/17/2020, 5:14 PMinterface Validator <out T : ValidationResult> {
fun validate(): T
}
object OnlineValidator : Validator <ValidationResult.Online> {
override fun validate(): <http://ValidationResult.Online|ValidationResult.Online> = TODO()
}
ritesh
03/17/2020, 5:31 PMSteve
03/17/2020, 6:05 PMSteve
03/17/2020, 6:06 PMTsvetan Ovedenski
03/17/2020, 6:20 PMSteve
03/17/2020, 6:23 PM