【发布时间】:2021-03-12 05:29:59
【问题描述】:
我有这个数据源特征
trait DataSource {
def insert[T](foo: Foo): Either[Exception, Future[T]]
}
然后我创建一个类似的实现:
class MongoDataSource(collection: MongoCollection[Document]) extends DataSource {
override def insert[ManagedObject](doc: ManagedObject): Either[Exception, Future[ManagedObject]] = {
Right(Future(new ManagedObject("")))
}
}
我有错误:
class type required but ManagedObject found
Right(Future(new ManagedObject("")))
【问题讨论】:
-
ManagedObject,正如你在这里使用的,是一个类型参数。 (可能是Int。可能是Char....)因此,您不能通过new实例化它。这不是class说明符。 -
trait 中的方法应该是:
def insert[T](t: T): Either[Exception, Future[T]]?