如何将字符串语句解析为代码?
例如:
boolean isOnline = true;
boolean isConnected = true;
String statement = "isOnline && isConnected";
if(statement) // do something
尝试这个:
boolean isOnline = true;
boolean isConnected = true;
String statement = "isOnline && isConnected";
String[] split = statement .split(" && ");
if(split.lenght > split[0].equals("isOnline") && split[1].equals("isConnected")){
// do something
}
我会建议以下策略,具体取决于您对字符串表达式的结构方式的了解。
1-开发自己的解析器。
你将不得不发展自己的语法。android 上有一个 ANTLR 端口:ANTLR 和 Android
即,你会得到你的表达(“isOnline”&&“isConnected”)
2-使用自反性/内省
解析字符串后,您可以使用自反性将字段或方法表达式转换为字段或方法。
即,您会将“isOnline”翻译为 isOnline,将“isConnected”翻译为 isConnected
祝你好运
原始 Java 有一个内置的JavaCompiler 类,它允许您编译和加载形成完整有效 .java 文件的代码。
安卓没有这个。
您可以尝试使用一些用 Java 编写的 JavaScript 引擎(参见,例如,Android 利用 V8 without WebView)。
但是,这仍然不允许您访问在 Java 函数中声明的局部变量。(使用反射 API,您将能够读取类字段的值。)