以下は、実行しようとしているコードです。
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]
クラス/メソッドは、 Classが class のサブタイプである class のQ
任意のオブジェクトを取ることができることを意味します。これを上限と呼びます。A
A
B
Q[A >: B]
クラス/メソッドは、 Classが class のスーパータイプである class のQ
任意のオブジェクトを取ることができることを意味します。これを下限と呼びます。A
A
B
私の理解が間違っている場合は助けてください。また、上記の問題が発生する理由を理解するのを手伝ってください。みんなありがとう。