在编译时检查类中每种类型的处理程序是否存在

时间:2016-04-14 17:36:01

标签: java scala reflection types compile-time

我有一个我无法控制的庞大的老班:

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) } 的作者用新类型添加了新字段,我的库就不应该编译。或者甚至更好的编译时警告来添加处理程序。

我想我可以在这里使用隐含证据,但不知道它的分辨率应该是什么样子。有什么想法吗?

0 个答案:

没有答案