2014-04-08 13 views
5

Tôi muốn xác định một giá trị trong mã Scala của tôi và coi giá trị này là hằng số (được sử dụng trong chú thích) trong mã Java của tôi (gọi là scala).Có cách nào để coi giá trị scala là hằng số từ java

Ví dụ:

object MyValues { 
    val a = 5 
} 

Tuy nhiên khi tôi đang cố gắng sử dụng giá trị này trong Java chú thích nó mang lại cho tôi một lỗi: java: giá trị thuộc tính phải được liên tục

@Target(ElementType.TYPE) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface MyJavaAnnotation { 
    int aValue() default MyValues.a(); // <-- Error 
} 

Gọi nó như thế này không hoạt động: MyValues$.MODULE$.a();

Tôi cũng đã thử tiền tố val với final từ khóa không thành công.

Có cách giải quyết nào cho vấn đề này không?

Trả lời

1

Không, theo như tôi biết. Là một khắc phục, bạn có thể định nghĩa một hằng Java trong đó kêu gọi phương pháp:

@Target(ElementType.TYPE) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface MyJavaAnnotation { 
    int aValue() default A; 
    static final int A = MyValues.a(); 
} 

tôi nghĩ nó có thể được định nghĩa bên trong chú thích tương tự, nếu không di chuyển nó ở đâu đó.

+0

Thật không may điều này cho cùng một lỗi nếu được xác định trong chú thích, vì tôi có thể thay đổi mã scala (nó là một mô-đun) tôi sẽ tạo mã JAVA sẽ giữ các giá trị và sử dụng nó trong scala và trong java khác của tôi mô-đun –

Các vấn đề liên quan