Концепция Scala UpperBound и LowerBound
Ниже приведен код, который я пытаюсь запустить:
class Student {
def printDetails = println("I am a student")
def printSomeOtherDetails = println("I love Studying")
}
class ComputerScienceStudent extends Student {
override def printDetails = println("I am a Computer Science Student")
override def printSomeOtherDetails = println("I love Scala")
}
class InformationTechnologyStudent extends Student {
override def printDetails = println("I am an Information Technology Student")
override def printSomeOtherDetails = println("I love Java")
}
class MyGenericClassForUpperBound {
def printStudentDetails[S <: Student](student: S) = {
student.printDetails
student.printSomeOtherDetails
}
}
class MyGenericClassforLowerBound {
def printStudentDetails[S >: ComputerScienceStudent](student: S) = {
student.printDetails
student.printSomeOtherDetails
}
}
методprintStudentDetails
изMyGenericClassforLowerBound
создает проблему. Заявленияstudent.printDetails
а такжеstudent.printSomeOtherDetails
говорят мне
value printDetails is not a member of type parameter S
Насколько я понял
Q[A <: B]
означает класс / методQ
может взять любые объекты классаA
где классA
это подтип классаB
, Это называется Upper Bound.Q[A >: B]
означает класс / методQ
может брать любые объекты классаA
где классA
это супер тип классаB
, Это называется нижней границей.Пожалуйста, помогите мне, если мое понимание неверно, и помогите мне понять, почему вышеупомянутая проблема возникает. Спасибо, парни.