문제

I have an Java-Annotation that return a double value:

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

When i try to attach the annotation to a field in a scala class and the value is negativ like here:

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

i get an compiler error with the message: "annotation argument needs to be a constant; found: 0.05.unary_-". I understood that i need a numerical literal and i looked into the Scala Language Specification and it seems, that the - sign is only used for the exponent but not for the mantissa. Does someone has an idea how i can have a negative value as runtime information using annotations?

Thanks, Klinke

도움이 되었습니까?

해결책

It appears that this is a bug.

Until the bug is fixed, you can take advantage of the fact that arithmetic on a constant is a constant and use

@DoubleValue( 0-0.05 )
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top