scala - 创建一个 Trait 只是为了指定一个合同而不是从多态的角度使用它是否可以?
问题描述
所以,假设我有以下形式的特征 -
trait QueryBuilder {
def build(filters: Seq[CustomFilter]): CustomDBQuery
}
有了这个,我希望建立一个抽象,它说任何查询构建器都应该符合这个合同。
现在,假设我有一个SeriesQueryBuilder
这样的定义,它有自己的build()
方法实现 -
object SeriesQueryBuilder extends QueryBuilder {
override def build(filters: Seq[CustomFilter]): CustomDDBQuery = ???
}
现在,我的问题是 - 我不想传递QueryBuilder
其他方法,而是只传递子类型的特定具体实例。在这种情况下,QueryBuilder
仅仅为了强制执行“查询构建器”应该遵循的合同而首先拥有该特征是错误的吗?为了概括它,我们还假设该特征没有任何对所有查询构建器都通用的方法。
解决方案
推荐阅读
- python - 为什么使用 spidev 发送的消息在收到来自 ADC 的位时会发生变化?
- xamarin.forms - xamarin.forms 轮播查看不同的内容页面
- reactjs - 尽管 props 在构造函数和 super 中传递,但反应 this.props 是未定义的
- android - 间隔日的警报管理器 - 我想取消过去的警报
- python - 如果对象存在,则在 python 中执行操作
- tensorflow - 深度学习回归 - 巨大的 mse 和损失
- c# - 使用 ExecuteNonQuery() 方法在数据库中插入大字符串后未清除 C# 大对象堆
- grafana - Grafana 模板:Prometheus label_values 变量的正则表达式
- bash - 尝试在 awk 中使用系统调用时出现语法错误
- apache-pig - 为什么 ROUND 函数不适用于大十进制数据?