Tôi đã thử sử dụng mọi thứ trên Janino trên Android và đã kết luận rằng chúng chỉ đơn giản là không hoạt động trong máy ảo Dalvik.Soạn chuỗi dưới dạng mã trong khi chạy trên Android
Vì vậy, Im chỉ cần đặt một câu hỏi đơn giản: Trên Android, Có thể biên dịch chuỗi chứa mã trong khi chạy để sử dụng trong ứng dụng hay không. Nếu có, có thư viện nào cho phép tôi làm như vậy và/hoặc bạn có thể chia sẻ một ví dụ về cách thực hiện nó không?
Đối (rất đơn giản) Ví dụ, Nếu tôi có một đối tượng String chứa sau:
public class Adder{
int x;
int y;
public Adder(int x,int y) {
this.x = x;
this.y = y;
}
public int add() { return x+y;}
}
Là một trong những dòng khổng lồ của chuỗi. Có cách nào tôi có thể xử lý nó để tạo ra một thể hiện của một đối tượng Adder vì vậy tôi có thể gọi phương thức add()
, thông qua API phản ánh?
Chỉnh sửa Tôi đã cố gắng giải thích beanshell nhưng nó đã được chứng minh là quá chậm. Im tìm kiếm một cái gì đó nhanh hơn một chút, giống như Janino
Ive xem qua tài liệu của nó nhưng không có đầu mối làm thế nào tôi có thể sử dụng nó để biên dịch một chuỗi mã như mã. Từ những gì nó có vẻ (ít nhất là trong ví dụ thế giới hello), tôi sẽ không thể sử dụng nó để thực sự biên dịch Strings. Tôi nhấn mạnh phần chuỗi bởi vì người dùng cần tạo một biểu thức toán học cần được biên dịch và đánh giá thành một đôi. – sourdesi
Yikes, tự động biên dịch dữ liệu người dùng nhập vào có vẻ giống như một hạt khó khăn để crack. Bạn sẽ phải phân tích chuỗi đó cho các phần để xây dựng và phương trình "phương trình" bằng cách sử dụng dexmaker. tức là "2 * 4/6" Bạn chắc chắn có thể sử dụng dexmaker để tự động xây dựng một phương pháp và sau đó chạy nó, nhưng nó muốn được khá lỗi dễ bị thử và phân tích trên bay như thế. Nếu bạn có quyền truy cập vào một Java-> JS bridge, bạn có thể sử dụng một cái gì đó như mathjs (http://mathjs.org/) nhưng thậm chí nó chỉ sẽ đánh giá những gì được đưa vào nó, không phân tích nó. – Durandal
Đúng, nó đã làm tôi thất vọng trong một tuần nay. Tôi đã được thông qua tất cả mọi thứ từ trình biên dịch để đánh giá biểu hiện cho ngôn ngữ kịch bản và tất cả mọi thứ hoặc là quá chậm hoặc không làm việc. Tuy nhiên, tôi vẫn chưa mất hy vọng, Ill đã tìm ra cách – sourdesi