Kotlin で
sealed class Query<T>
object StringQuery : Query<String>()
object IntQuery : Query<Int>()
みたいなシールドクラスがあったとして、
fun <T> executeQuery(query: Query<T>): T = when (query) {
is StringQuery -> "何か文字列"
is IntQuery -> 1000
}
という感じで型に応じた返り値を返したいのだけど、上のようなコードを書くと 「Type Mismatch. Required: T / Found: String」 みたいな感じでコンパイラに怒られる。
こういう感じのことをするいい方法ってないものだろうか……