Scala: портирование Java-интерфейса на Scala

1

У меня есть код 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. Единственное, о чем я могу думать, это написать его как черту Скалы.

Любые указатели, предложения приветствуются.

  • 0
    Это не интерфейс. Это Java- annotation . Я не уверен, что он может быть правильно перенесен в Scala.
Теги:
traits

1 ответ

1

Нет, в настоящее время аннотации с @Retention(RUNTIME) не могут быть записаны в Scala.

Или можно как-то использовать это в Scala?

Да, вы можете использовать его в Scala. Вы можете иметь как Scala, так и Java-код в одном проекте (Java-код обычно переходит в src/main/java, Scala-код в src/main/scala), и они могут даже ссылаться друг на друга.

  • 0
    Это хорошие новости. Можете ли вы показать мне, как это можно сделать на примере? Должен ли я как-то использовать пакет javaconversions? Как я могу использовать это в Scala
  • 0
    Нет, вам не нужно делать ничего особенного. Просто используйте @MessageCount в вашем Scala-коде так же, как в Java. За исключением того, что вам может потребоваться указать, хотите ли вы аннотировать поле или метод, см. Scala-lang.org/api/2.11.5/… .
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню