【发布时间】:2021-10-25 01:43:10
【问题描述】:
我有一个用例,我需要对一些 Scala 对象进行一些 Java 反射(甚至不要问)。无论如何,我有时需要在 Scala 中将这些对象添加到注释中。
这是我的 (java) 注释:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
Class<?>[] value();
}
假设这是我的 Scala 对象:
object Foo{}
在 Java 中,我可以像这样使用上面的注释来引用 Foo:
@MyAnnotation(Foo.class)
class SomeClass{}
然而,在 Scala 中,我看不到如何从 Object 中获取类型文字:
@MyAnnotation(Array(classOf[Foo]))
class SomeClass{}
此操作失败,并显示错误消息:
未找到:键入 Foo
有什么方法可以在 Java 注释中引用我的 Foo 对象类型?请注意,我不能use Foo.getClass,因为那是一个方法调用,而不是一个常量。
【问题讨论】:
-
试试
@MyAnnotation(Array(Foo.getClass)) class SomeClass。有用吗? -
@DmytroMitin
annotation argument needs to be a constant; found: Foo.getClass() -
嗯...重新打开。 (为了记录,链接是stackoverflow.com/questions/9635563/…)
标签: java scala reflection annotations