例如:
object CampaignTypes extends Enumeration {
type CampaignType = Value
val ABC,DEF = Value
}
object campaignTypeId extends EnumNameField(this, CampaignTypes) {
override val defaultValue = CampaignTypes.ABC
}
IntelliJ下划线显示CampaignTypes.ABC红色,并显示消息CampaignTypes.Value类型的表达式不符合预期的EnumType#Value类型
代码可以编译并运行。但是,IntelliJ将其标记为错误,从而使代码难以读取(因为还有许多其他情况,IntelliJ也无法解决)。还使用了正确的Scala插件。有办法解决吗?
另一个在BsonRecord上定义的w.r.t方法示例
sealed trait Product {...}
class Document extends BsonRecord[Document] {
object productType extends StringField(this, 20)
....
def toTyped: Option[Product] = this.productType.get match {//something which returns an Option[Product] from a List[Product]}
}
object documents extends BsonRecordListField(this, Document) {
def toProducts: Set[Product] =
this.get.flatMap(_.toTyped)(breakOut) //Cannot resolve symbol toTyped
}
答案 0 :(得分:1)
是的,您可以通过提供类型提示来帮助Intellij:
object campaignTypeId extends EnumNameField[A, CampaignsTypes.type](this, CampaignTypes) {
override val defaultValue = CampaignTypes.ABC
}
其中A
是封装类/对象的类型
对于一般解决方案:
对于BsonRecordListField,显式泛型类型也应解决。