我有一个类似Java的注释:
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ConvertWith {
Class<? extends Converter> converterClass();
}
我有几个用 Scala 编写的转换器对象。例如, IntConverter 如下所示:
object IntConverter extends Converter {
def convert(str: String) = str.toInt
}
我想使用以下这些对象将它们与字段相关联:
class SampleAction {
@ConvertWith(converterClass = classOf[IntConverter])
val x: Int = 0
}
但是,Scala找不到转换器类,因为 scalac 以不同方式编译对象。
我也尝试了以下方法,但没有一种方法有效:
// error: class type required but IntConverter.type found
@ConvertWith(converterClass = classOf[IntConverter.type])
// error: annotation argument needs to be a constant...
@ConvertWith(converterClass = IntConverter.getClass)
有办法做到这一点吗?你有什么想法吗?
提前致谢。