Seri
08/16/2018, 8:49 PMsealed class OutsideGroup {
class Option1: OutsideGroup()
class Option2: OutsideGroup()
sealed class InsideGroup: OutsideGroup() {
class Option3: InsideGroup()
class Option4: InsideGroup()
}
}
fun returnOuter(): OutsideGroup = OutsideGroup.Option1()
fun returnInner(): OutsideGroup.InsideGroup = OutsideGroup.InsideGroup.Option3()
sealed class OutsideGroup
sealed class InsideGroup: OutsideGroup()
class Option1: OutsideGroup()
class Option2: OutsideGroup()
class Option3: InsideGroup()
class Option4: InsideGroup()
fun returnOuter(): OutsideGroup = Option1()
fun returnInner(): InsideGroup = Option3()
Andreas Sinz
08/16/2018, 8:55 PMòbject
instead of class
in this example, there is no need for multiple instancesSeri
08/16/2018, 9:08 PMsealed class OutsideGroup
sealed class InsideGroup: OutsideGroup()
object Option1: OutsideGroup()
object Option2: OutsideGroup()
object Option3: InsideGroup()
object Option4: InsideGroup()
fun returnOuter(): OutsideGroup = Option1
fun returnInner(): InsideGroup = Option3
fun returnInnerFromOuter(): OutsideGroup = Option4
fun returnOuterFromInner(): InsideGroup = Option2 // Fails
tschuchort
08/17/2018, 9:54 AMAndreas Sinz
08/17/2018, 10:08 AMtschuchort
08/17/2018, 10:25 AMinterface Interf {
fun foo(): A|B|C
}
class X : Interf {
override fun foo(): A|B
}
class Y : Interf {
override fun foo(): B|C
}
Andreas Sinz
08/17/2018, 2:04 PMtschuchort
08/17/2018, 5:27 PMAndreas Sinz
08/18/2018, 8:30 AMReturn2
or Interf.foo()
)
interface Base { }
sealed class Return1: Base
interface Return2: Base
object A : Return1()
object B : Return1(), Return2
object C: Return2
interface Interf {
fun foo(): Base
}
class X : Interf {
override fun foo(): Return1
}
class Y : Interf {
override fun foo(): Return2
}