ExpressionEvaluator
ライブラリのクラスの単純な使用例を考えてみましょうJanino
。つまり、次のように式のパラメータを推測するために使用する場合です。
public static String[] getParameters(String expression) { // Suppress exceptions
try {
return ExpressionEvaluator.guessParameterNames(
new Scanner(null, new StringReader(expression)));
} catch (Exception e) {
}
return null;
}
上記は、私が使用した任意のタイプの式(非常にあいまいなものを含む)で非常にうまく機能しますが(100%)、パラメーターのいずれかが大文字で始まる場合は省略されます.
たとえば、式
aVar + Another
aVar
上記のメソッドに渡された場合、1 つのパラメーター ( ) のみが生成されますが、他のパラメーター ( Another
) は無視されます。
この動作の説明はありますか (たとえば、大文字で始まる変数はクラス名と見なされます)?
最も重要なことは、説明されている動作を何らかの方法でバイパスできるか (たとえば、何らかの構成オプションを介して) ことです。
アップデート
どうやら制限はより一般的で、大文字で始まるすべてのパラメーターに影響します。これは、 JANINO-151で説明され、関連するディスカッションで言及されているように、Janinoの既知の制限 (または機能)です。
実際、 Janino ExpressionEvaluator クラスguessParameterNames()
のメソッドのソース コードはこれを裏付けています。