Tôi hiện đang làm việc với ngôn ngữ lập trình, diễn giải, chuyên ngành được triển khai trong Java. Là một phần rất nhỏ của ngôn ngữ, tôi muốn thêm khả năng thực hiện cuộc gọi vào Java. Trước khi tôi đi sâu vào tất cả các sự phản chiếu dữ dội, tôi đã tự hỏi liệu có ai biết một thư viện chung để làm phần "phụ trợ" trong việc gọi mã Java một cách phản xạ hay không.Có thư viện "phụ trợ" chung để phản ánh Java không
Tức là, tôi phân tích một chuỗi (tôi định nghĩa ngữ pháp) thành một số cấu trúc dữ liệu đại diện cho một cuộc gọi phương thức Java (hoặc hàm tạo hoặc truy cập trường) và sau đó chuyển cấu trúc dữ liệu đó tới thư viện này. kết quả. Đặc biệt, tôi muốn nó đã xử lý tất cả các trường hợp cạnh mà tôi không muốn tìm ra:
- Tự động chọn đúng phương pháp dựa trên các loại đối số (như Class.getDeclaredMethod thông minh)))
- Xử lý phân biệt giữa mảng và đối tượng bình thường tham chiếu
- vv
tôi đã dành một ít thời gian nhìn vào hiện thực của các ngôn ngữ động trên JVM, nhưng đây là những thường phức tạp hơn nhiều so với tôi đang tìm kiếm hoặc được tối ưu hóa cao cho các hạt ngôn ngữ ular.
Một tùy chọn khác là chuyển ngữ pháp của tôi thành chuỗi bằng ngôn ngữ động và gọi nó bằng Rhino hoặc gì đó, nhưng chi phí cao hơn một chút so với tôi đang tìm kiếm.
Cảm ơn!
Không. Tôi đang tìm một cái gì đó với một phương pháp như "Object invoke (đối tượng Object, String nameOfMethod, Object [] args)" tìm ra phương thức đúng (lấy thừa kế và chuyển đổi kiểu vào tài khoản) và gọi nó. Java scripting chỉ cho phép tôi đánh giá các chuỗi trong một ngôn ngữ kịch bản hiện có. –
Vâng, Java scripting không chỉ cho phép bạn gọi các ngôn ngữ kịch bản từ Java, nếu tôi không nhầm - nó cung cấp các cơ chế để cho phép mã kịch bản tương tác với các đối tượng Java (được gọi là Ràng buộc trong tài liệu), trông rất giống với những gì bạn đang cố gắng làm. – alex
... ít nhất, hãy xem triển khai tập lệnh hiện có sẽ giúp bạn – alex