次のコンパイル メッセージが表示されます。
推論された型引数 [sdo.core.domain.Field[_ >: 2 with java.util.UUID <: java.lang.Comparable[ >: 1 with java.util.UUID <: java.lang.Object] with java. io.Serializable]] メソッド :: の型パラメーターの境界に準拠していません [B >: sdo.core.domain.Field[ >: org.scala_tools.time.Imports.DateTime の文字列 <: java.lang.Comparable[ _ >: java.lang.String with org.joda.time.ReadableInstant <: java.lang.Object] with java.io.Serializable]] [error] override def fieldList = this.id :: this.create :: this .name :: this.description :: Nil
私が欲しいのは のリストField[_]
、または と共変するものField[_]
です。それ、どうやったら出来るの?
問題のあるコードは次のとおりです。
class Work( initialId :EntityUuidIdField,
initialName :NameField,
initialDescription :TextField) extends Entity{
val id = initialId
val name = initialName
val description :Field[String]= initialDescription
val create = new DateTimeField()
val begun = new DateTimeField()
val inProgress = new DateTimeField()
val done = new DateTimeField()
val subjectiveWellBeing = new SubjectiveWellBeingField()
val size = new WorkSizeField()
override def fieldList = this.id :: this.create :: this.name :: this.description :: Nil
}
そして型の定義:
class DateTimeField extends Field[DateTime] {
class EntityUuidIdField( val id :UUID) extends EntityIdField[UUID]( id) {
class EntityIdField[T]( id :T) extends Field[T] {
class NameField extends Field[String] {
class Field[T] extends Signal[T] {