Advertisement
Guest User

Untitled

a guest
Sep 17th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. //listOf actually creates a List<T>
  2. //student > person List<Student> > List<Person> the relation is variance
  3. // invariant
  4. // why invariant?
  5.  
  6. open class Person(val name: String)
  7. class Student(name: String): Person(name)
  8.  
  9. fun main(){
  10. val names: List<String> = listOf("John", "Sarah", "Mark")
  11. val ranks: List<Int> = listOf(3, 5, 6)
  12.  
  13. val student: Student = Student("John")
  14. val person: Person = student
  15.  
  16. val students: MutableList<Student> = mutableListOf(Student("Jack"), Student("Sarah"))
  17. val persons: MutableList<Person> = students
  18. }
  19.  
  20. // why invariant?
  21. open class Person(val name: String)
  22. class Student(name: String): Person(name)
  23. class Teacher(name: String): Person(name)
  24.  
  25. fun add(group: MutableList<Person>, person: Person) = group.add(person)
  26.  
  27. fun main(){
  28. val students: MutableList<Student> = mutableListOf()
  29. val teacher: Teacher = Teacher("John")
  30. add(students, teacher)
  31.  
  32. val student: Student = students.get(0)
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement