将Scala对象的类设置为Java注释的字段

时间:2017-05-19 16:37:34

标签: java scala reflection annotations

我有一个类似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)

有办法做到这一点吗?你有什么想法吗?

提前致谢。

0 个答案:

没有答案