T) { fun toInt(): NumberBox<Int> = NumberBox(value.toInt()) } val box1: NumberBox<String> = NumberBox("") // NG val box2: NumberBox<Float> = NumberBox(1.2f) val box3: NumberBox<Int> = box2.toInt()
interface Greeter { fun greet(): String } class Person(override val name: String): WithName, Greeter { override fun greet(): String = "Hello" } fun <T> introduceMyself(t: T): String where T: WithName, T: Greeter { return "${t.greet()}, I am ${t.name}!" }
interface Greeter { fun greet(): String } class Person(override val name: String): WithName, Greeter { override fun greet(): String = "Hello" } fun <T> introduceMyself(t: T): String where T: WithName, T: Greeter { return "${t.greet()}, I am ${t.name}!" } ジェネリック関数