Могу ли я иметь отрицательное значение в качестве константного выражения в Scala? - PullRequest
11 голосов
/ 02 июня 2010

У меня есть Java-аннотация, которая возвращает двойное значение:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface DoubleValue {
  double value();
} 

Когда я пытаюсь прикрепить аннотацию к полю в классе scala, и значение будет отрицательным, как здесь:

class Test {
  @DoubleValue(-0.05)
  var a = _
}

Я получаю ошибку компилятора с сообщением: «аргумент аннотации должен быть константой; найдено: 0.05.unary_-». Я понял, что мне нужен числовой литерал, и я изучил спецификацию языка Scala, и кажется, что знак - используется только для показателя степени, но не для мантиссы. Есть ли у кого-то идея, как я могу иметь отрицательное значение в качестве информации времени выполнения с использованием аннотаций?

Спасибо, Klinke

1 Ответ

7 голосов
/ 02 июня 2010

Похоже, что это ошибка.

Пока ошибка не устранена, вы можете воспользоваться тем, что арифметика с константой является константой, и использовать

@DoubleValue( 0-0.05 )
...