1
+ class SealedClass {
2
+ fun test () {
3
+
4
+ println (" enum" )
5
+ val state = EnumState .PLAYING
6
+ println (getStateDescription(state))
7
+
8
+ println (" " )
9
+ println (" Replaced with sealed class" )
10
+ val playerA = SealedState .Play (" A" )
11
+ println (getSealedStateDescription(playerA))
12
+ val defaultPlayer = SealedState .PLAYING_
13
+ println (getSealedStateDescription(defaultPlayer))
14
+ }
15
+
16
+ private fun getStateDescription (state : EnumState ) = when (state) {
17
+ EnumState .PAUSE -> " Player is paused"
18
+ EnumState .IDLE -> " Player is idle"
19
+ EnumState .PLAYING -> " Player is playing"
20
+ EnumState .STOP -> " Player is stopped"
21
+ }
22
+
23
+ private fun getSealedStateDescription (state : SealedState ) = when (state) {
24
+ SealedState .PAUSE_ -> " Player is paused"
25
+ SealedState .IDLE_ -> " Player is idle"
26
+ SealedState .PLAYING_ -> " Player is playing"
27
+ SealedState .STOP_ -> " Player is stopped"
28
+ is SealedState .Pause -> " Player ${state.name} is paused"
29
+ is SealedState .Play -> " Player ${state.name} is playing"
30
+ is SealedState .Idle -> " Player ${state.name} is idle"
31
+ is SealedState .Stop -> " Player ${state.name} is stopped"
32
+ }
33
+ }
34
+
35
+ enum class EnumState {
36
+ PAUSE , PLAYING , IDLE , STOP
37
+ }
38
+
39
+ sealed class SealedState {
40
+ data class Pause (val name : String ) : SealedState()
41
+ data class Play (val name : String ) : SealedState()
42
+ data class Idle (val name : String ) : SealedState()
43
+ data class Stop (val name : String ) : SealedState()
44
+ object PAUSE_ : SealedState()
45
+ object PLAYING_ : SealedState()
46
+ object IDLE_ : SealedState()
47
+ object STOP_ : SealedState()
48
+ }
0 commit comments