class State { class NotReady : State() class Ready : State() } data class Data<T : State>(val a: Int) { } これが Phantom Type 型パラメータは実⾏行行時に消 去されるため、Stateクラ スが使⽤用されることはない
-‐> SELECT * FROM Person WHERE ID = 1; sealed class Status { class From : Status() // From۟ΛೖྗͰ͖Δঢ়ଶ class Where : Status() // Where۟ΛೖྗͰ͖Δঢ়ଶ class Print : Status() // ݁ՌΛग़ྗͰ͖Δঢ়ଶ } // QueryੜΫϥεͷఆٛ class Query<T : Status>( val column: String, val tableName: String, val predicate: String)