class Forest(val name: String) {
fun addTree(name: String) {
// name은 파라미터의 name
// 프로퍼티를 사용하려면 this.name이 필요
}
}
Forest
와 addTree
타입 파라미터가 독립적으로 동작한다.interface Tree
class Birch: Tree
class Spruce: Tree
class Forest<T: Tree> {
fun <T: Tree> addTree(tree: T) {
// ...
}
}
fun main() {
val forest = Forest<Birch>()
forest.addTree(Birch())
forest.addTree(Spruce())
}
class Forest<T: Tree> {
fun addTree(tree: T) {
// ...
}
}
fun main() {
val forest = Forest<Birch>()
forest.addTree(Birch())
forest.addTree(Spruce()) // type missmatch
}
class Forest<T: Tree> {
fun <ST: Tree> addTree(tree: ST) {
// ...
}
}