nulldev
03/01/2017, 3:06 AMclass Huh {
private interface UriFilter
open class Filter<V>(val name: String, val state: V) {
open class CheckBox(name: String, defValue: Boolean): Filter<Boolean>(name, defValue)
open class Select<V>(name: String, state: Array<V>): Filter<Array<V>>(name, state)
open class Group<V>(name: String, state: List<V>): Filter<List<V>>(name, state)
}
class AdvancedOption(name: String, val param: String, defValue: Boolean = false): Filter.CheckBox(name, defValue), UriFilter
class RatingOption : Filter.Select<String>("", arrayOf("")), UriFilter
class AdvancedGroup : UriGroup<Filter<*>>("", listOf(
AdvancedOption("", "", true),
AdvancedOption("", "", true),
AdvancedOption("", ""),
AdvancedOption("", ""),
AdvancedOption("", ""),
AdvancedOption("", ""),
AdvancedOption("", ""),
AdvancedOption("", ""),
RatingOption()
))
open class UriGroup<V>(name: String, state: List<V>) : Filter.Group<V>(name, state), UriFilter
companion object {
@JvmStatic fun main(args: Array<String>) {
val test = Huh.AdvancedGroup()
println(test.name)
println(test.state)
}
}
}