【问题标题】:Scala: porting a java interface to scalaScala:将 java 接口移植到 scala
【发布时间】:2015-03-23 04:22:20
【问题描述】:

我有一段Java代码如下:

import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME;


@BindingAnnotation
@Target({ FIELD, PARAMETER, METHOD })
@Retention(RUNTIME)
public @interface MessageCount {
}

这不是我的代码,但我正在尝试用 Scala 重写它。我不太了解@interface 构造。我也不明白这些注释是如何翻译成 Scala 的。 或者是否可以在 Scala 中以某种方式使用它?

我更喜欢在 Scala 中重写/移植它。我唯一能想到的就是把它写成一个 Scala trait。

任何指针,建议表示赞赏。

【问题讨论】:

  • 不是界面。它是 java annotation。我不确定它是否可以正确移植到 scala。

标签: java scala traits


【解决方案1】:

不,目前无法用 Scala 编写带有 @Retention(RUNTIME) 的注释。

或者是否可以在 Scala 中以某种方式使用它?

是的,您可以在 Scala 中使用它。您可以在同一个项目中同时拥有 Scala 和 Java 代码(Java 代码通常转到 src/main/java,Scala 代码到 src/main/scala),它们甚至可以相互引用。

【讨论】:

  • 这是个好消息。你能告诉我如何在一个例子中做到这一点吗?我是否必须以某种方式使用 javaconversions 包?我如何在 Scala 中使用它
  • 不,你不需要做任何特别的事情。只需在 Scala 代码中使用 @MessageCount,就像在 Java 中一样。除非您可能需要指定是否要注释字段或方法,请参阅scala-lang.org/api/2.11.5/…
  • 那么我该如何使用@Retention(运行时)?
猜你喜欢
  • 1970-01-01
  • 2011-05-13
  • 2015-04-15
  • 1970-01-01
  • 2015-07-20
  • 2011-03-27
  • 2015-10-31
  • 2013-05-08
  • 1970-01-01
相关资源
最近更新 更多