定義表示式

若要定義符號,您必須使用表示式。 代理程式會對表示式求值以指派符號的值。

在表示式中使用資料

表示式可以使用下列資料:
  • 要求類型的輸入資料符號
  • 相同要求對映程式定義中說明的其他符號
  • 數值常數
  • 字串常數(以 " 定界,例如,"string"
  • 布林常數(trueTRUEfalseFALSE
  • 空值常數
如需輸入資料符號的相關資訊,請參閱表 2

如果符號值為 Java™ 類別的實例化,則表示式可以包含對類別內定義的欄位及方法的參照。 若要參照欄位,請使用 symbol.fieldname。 若要參照方法,請使用 symbol.methodname(parameters)。 方法呼叫必須返回值。 例如,您可以使用 Java 字串方法及包含字串值的符號。

若要參照類別的靜態欄位或方法,您還可以使用 classname.fieldnameclassname.methodname(parameters)

如果符號參照陣列物件,則表示式可以選取元素 (symbol[selector]) 並決定陣列的長度 (symbol.length)

運算子

您可以在表示式中使用下列運算子:
  • 布林運算子:AND&OR|NOT!
  • 比較:==!=GT>LT<GE>=LE<=
  • 數值運算子:+-*/
  • 括弧(用於強制求值順序):(, )
重要: 在 XML 中,您必須跳出符號 <>&。 您也可以使用 GT(大於)、GE(大於或等於)、LT(小於)、LE(小於或等於)和 AND 運算子。
表示式可以使用 instanceof 運算子來評估值是否為類別的實例:
expression instanceof java.class.name
此運算子類似於 Java 的 instanceof 運算子,會產生布林值。在此範例中,如果 expression 值所屬的類別符合下列任何條件之一,則值為 true:
  • 名稱為 java.class.name
  • java.class.name 可識別之類別的直接或間接子類別。
  • 直接或間接實作 java.class.name 識別的介面。
表示式還可以使用 new 運算子來實例化 Java 類別的新物件。 此運算子類似於 Java 的 new 運算子:
new java.class.name(expression1, expression2, ... expressionN)

運算子優先順序

運算子依優先順序求值。 具有相同優先順序的運算子從左至右進行求值。 您可以使用括弧 () 來變更求值順序。
優先順序如下所示:
  1. . 運算子(方法呼叫或欄位參照)
  2. [ ](陣列元素選取器)
  3. new
  4. !, NOT
  5. *, /
  6. +, -
  7. GT, >, LT, <, GE, >=, LE, <=, instanceof
  8. ==, !=
  9. AND, &
  10. OR, |

範例

$s1 >= ( 2 * ($s2.sampMethod($s3, true) + 1))
代理程式以下列方式對此表示式求值:
  1. $s1 符號求值。 必須生產數值。
  2. $s2 符號求值。 必須生產 Java 物件。
  3. $s3 符號求值。
  4. $s2 求值產生的物件呼叫 sampMethod 方法。 $s3 的求值結果作為第一個參數遞送,而布林值 true 作為第二個參數遞送。 呼叫 sampMethod 必須返回數值。
  5. 向步驟 4 的結果中加 1。
  6. 將步驟 5 的結果乘 2。
  7. 將步驟 1 的結果與步驟 6 的結果相互比較。 如果步驟 1 的結果大於或等於步驟 6 的結果,則返回 true。 否則,返回 false