У меня есть код 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. Единственное, о чем я могу думать, это написать его как черту Скалы.
Любые указатели, предложения приветствуются.
Нет, в настоящее время аннотации с @Retention(RUNTIME)
не могут быть записаны в Scala.
Или можно как-то использовать это в Scala?
Да, вы можете использовать его в Scala. Вы можете иметь как Scala, так и Java-код в одном проекте (Java-код обычно переходит в src/main/java
, Scala-код в src/main/scala
), и они могут даже ссылаться друг на друга.
@MessageCount
в вашем Scala-коде так же, как в Java. За исключением того, что вам может потребоваться указать, хотите ли вы аннотировать поле или метод, см. Scala-lang.org/api/2.11.5/… .
annotation
. Я не уверен, что он может быть правильно перенесен в Scala.