Chcę zdefiniować wartość w moim kodzie Scala i traktować tę wartość jako stałą (używane w adnotacji) w ramach mojego kodu Java (który wywołuje scala).Czy istnieje sposób traktowania wartości scala jako stała z java
Na przykład:
object MyValues {
val a = 5
}
Jednak gdy próbuję użyć tej wartości w adnotacji Java wyskakuje mi błąd: Java: Wartość atrybutu musi być stała
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyJavaAnnotation {
int aValue() default MyValues.a(); // <-- Error
}
Wywołanie go w ten sposób również nie działa: MyValues$.MODULE$.a();
Próbowałem również przedłużyć val z parametrem końcowym słowo kluczowe bez powodzenia.
Czy istnieje obejście tego problemu?
Niestety ten sam błąd występuje, jeśli jest zdefiniowany w samej adnotacji, ponieważ mogę zmienić kod scala (jest to moduł) Utworzę kod JAVA, który będzie trzymał wartości i używał go w scala oraz w mojej drugiej java moduły –