文字列ステートメントをコードに解析するにはどうすればよいですか?
例えば:
boolean isOnline = true;
boolean isConnected = true;
String statement = "isOnline && isConnected";
if(statement) // do something
元の Java には組み込みのJavaCompiler クラスがあり、完全に有効な .java ファイルを形成するコードをコンパイルおよびロードできます。
Androidにはこれがありません。
Java で記述された JavaScript エンジンを使用することもできます (たとえば、Android は WebView なしで V8 を利用します)。
ただし、これでも Java 関数で宣言されたローカル変数にアクセスすることはできません。(リフレクション API を使用すると、クラス フィールドの値を読み取ることができます。)
これを試して:
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 に変換します。
これで頑張ってください