По сути, я хочу сделать что-то вроде этого:
class Shape
class CoordSystem
class C3D(val x: Double, y: Double, z: Double) extends CoordSystem
class C2D(val x: Double, y: Double) extends CoordSystem
abstract class Shape {
def getCoords[C <: CoordSystem]: List[C]
}
class Pyramid extends Shape {
def getCoords: List[C3D] =
List(new C3D(1,2,1), new C3D(1,1,1), new C3D(2,2,1), new C3D(2,1,1), new C3D(1.5,1.5,3))
}
>> error: class Pyramid needs to be abstract, since method getCoords in class Shape of type [C <: CoordSystem]List[C] is not defined
Я видел несколько разных идей по этому ответу , но ни одна из них не кажется вполне подходящей для этого случая- потому что они не позволяют мне писать код в другом месте, который ссылается на myShape.getCoords
, как если бы он был правильно определен в подклассе Shape
, возвращая список объектов из подкласса CoordSystem
.
Я также нашел интересную дискуссию о дженериках в списке рассылки Scala Lang, но никак не мог связать его с моей ситуацией.
Любая помощь с благодарностью!