在 Scala 中作为注释参数的注释数组
Array of annotations as parameter to an annotation, in Scala
关于将数组作为参数传递给注释有很多问题,这不是这些问题的骗局。
我想使用一个 Java-land 注释,它接受一个 注释数组 作为参数,例如
@ManagedOperation
@ManagedOperationParameters({
@ManagedOperationParameter(name="start"),
@ManagedOperationParameter(name="end")
})
def stuff(start: String, end: String): Unit = ???
但这在 Scala 中不是有效语法,
@ManagedOperation
@ManagedOperationParameters(Array(
@ManagedOperationParameter(name="start"),
@ManagedOperationParameter(name="end")
))
def stuff(start: String, end: String): Unit = ???
如果可能的话,正确的方法是什么?
顺便说一句,我什至 checked all of github 看看是否有任何 Scala 开发人员正在使用这个 (Spring JMX) 注释。
在 scala 中,内部注释应该用作常规类型:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "moduleType",
defaultImpl = classOf[PuppetModule]
)
@JsonSubTypes(Array(
new Type(value = classOf[PuppetModule], name = "puppet"),
new Type(value = classOf[PluginModule], name = "plugin")
))
trait Module {
val moduleType: String = if (this.isInstanceOf[PuppetModule]) "puppet" else "plugin"
val nodes: List[String] = List[String]()
}
关于将数组作为参数传递给注释有很多问题,这不是这些问题的骗局。
我想使用一个 Java-land 注释,它接受一个 注释数组 作为参数,例如
@ManagedOperation
@ManagedOperationParameters({
@ManagedOperationParameter(name="start"),
@ManagedOperationParameter(name="end")
})
def stuff(start: String, end: String): Unit = ???
但这在 Scala 中不是有效语法,
@ManagedOperation
@ManagedOperationParameters(Array(
@ManagedOperationParameter(name="start"),
@ManagedOperationParameter(name="end")
))
def stuff(start: String, end: String): Unit = ???
如果可能的话,正确的方法是什么?
顺便说一句,我什至 checked all of github 看看是否有任何 Scala 开发人员正在使用这个 (Spring JMX) 注释。
在 scala 中,内部注释应该用作常规类型:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "moduleType",
defaultImpl = classOf[PuppetModule]
)
@JsonSubTypes(Array(
new Type(value = classOf[PuppetModule], name = "puppet"),
new Type(value = classOf[PluginModule], name = "plugin")
))
trait Module {
val moduleType: String = if (this.isInstanceOf[PuppetModule]) "puppet" else "plugin"
val nodes: List[String] = List[String]()
}