我有一个我无法控制的庞大的老班:
1000001
此外,我有正确处理每个字段的代码(用户在运行时决定应该处理哪个字段),具体取决于它的类型,所以我有一个class Legacy {
@BeanProperty var foo: String = _
@BeanProperty var bar: Int = _
// a lot of fields
}
,其中包含{{1}的子类}对于每种特定类型:
Map[String, Handler]
我想要的是编译时保证Handler
类中的所有字段都有适当的处理程序对象,如果def getHandler(fieldType: String): Handler = {
Map(
"String" -> StringHandler,
"scala.Int" -> IntHandler
).getOrElse(fieldType, AnyRefHandler)
}
的作者用新类型添加了新字段,我的库就不应该编译。或者甚至更好的编译时警告来添加处理程序。
我想我可以在这里使用隐含证据,但不知道它的分辨率应该是什么样子。有什么想法吗?