2012-08-14 58 views
5

Trong Scala chúng ta có thể có các phương thức không tham số, có thể rất hữu ích cho các mục đích DSL; chúng cũng được sử dụng để tự động xác định getters cho các trường lớp.Bạn có thể khai báo các phương thức không tham số trong Java để sử dụng trong Scala không?

Tôi đang phát triển một thư viện Java mà tôi muốn tích hợp liền mạch với Scala nhất có thể. Tôi đã tự hỏi nếu có một cách để chú thích một phương pháp Java với một danh sách tham số trống để Scala nhận ra nó là không tham số.

Ví dụ

class Foo { 
    @ParameterLess 
    public String[] bar() { return someArray; } 
} 

để trong Scala tôi có thể làm:

val f = new Foo 
f bar (0) 

mà không cần phải trình biên dịch để phàn nàn về bar() có một danh sách đối số trống rỗng?

Ngoài ra, có cách nào để xác định getters kiểu Scala và setter từ Java không?

Lưu ý: tất nhiên tôi biết rằng trong ví dụ cụ thể này, tôi có thể workaround vấn đề bằng cách định nghĩa

public String bar(int i) { return someArray[i]; } 
+0

Bạn đã thử với thanh (Object ... os)? – Luciano

+1

bạn cần phải gọi 'f bar() (0)' trong ví dụ của bạn để trình biên dịch có thể phân biệt giữa các tham số và chỉ mục mảng. – aishwarya

+0

Tất nhiên. Tôi đã tự hỏi nếu có một cách để gợi ý cho Scala rằng 'bar()' nên hoạt động như 'bar' –

Trả lời

1

này có lẽ câu trả lời câu hỏi của tôi:

Scala getters and setters in Java class

Câu trả lời là bạn có thể 't, trừ khi bạn nghỉ mát với một số thủ thuật liên quan đến đặc điểm. Vâng, tôi đoán rằng một số loại chú thích à la @scala.reflect.BeanProperty sẽ là một cải tiến hữu ích.

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