This file is indexed.

/usr/share/doc/libognl-java/LanguageGuide/apa.html is in libognl-java-doc 2.7.3-5.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Appendix&nbsp;A.&nbsp;OGNL Language Reference</title><link href="../docbook.css" type="text/css" rel="stylesheet"><meta content="DocBook XSL Stylesheets V1.78.1" name="generator"><link rel="home" href="index.html" title="OGNL Language Guide"><link rel="up" href="index.html" title="OGNL Language Guide"><link rel="prev" href="coerceCollection.html" title="Interpreting Objects as Collections"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">Appendix&nbsp;A.&nbsp;<acronym class="acronym">OGNL</acronym> Language Reference</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="coerceCollection.html"><img src="../images/navigation/prev.gif" alt="Prev"></a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;</td></tr></table><hr></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a name="N10612"></a>Appendix&nbsp;A.&nbsp;<acronym class="acronym">OGNL</acronym> Language Reference</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="section"><a href="apa.html#operators">Operators</a></span></dt></dl></div><p>This section has a fairly detailed treatment of <acronym class="acronym">OGNL</acronym>'s syntax and implementation. See below for a complete table of <acronym class="acronym">OGNL</acronym>'s operators, a section on how <acronym class="acronym">OGNL</acronym> coerces objects
        to various types, and a detailed description of <acronym class="acronym">OGNL</acronym>'s basic expressions.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="operators"></a>Operators</h2></div></div></div><p><acronym class="acronym">OGNL</acronym> borrows most of Java's operators, and adds a few new ones. For the most part, <acronym class="acronym">OGNL</acronym>'s treatment of a given operator is the same as Java's, with the important caveat that
            <acronym class="acronym">OGNL</acronym> is essentially a typeless language. What that means is that every value in <acronym class="acronym">OGNL</acronym> is a Java object, and <acronym class="acronym">OGNL</acronym> attempts to coerce from each object a meaning appropriate to the
            situation it is used in (see the section on <a class="link" href="coercion.html" title="Chapter&nbsp;5.&nbsp;Coercing Objects to Types">coercion</a>).</p><p>The following table lists <acronym class="acronym">OGNL</acronym> operators in reverse precedence order. When more than one operator is listed in the same box, these operators have the same precedence and are evaluated in left-to-right order.</p><div class="table"><a name="N10642"></a><p class="title"><b>Table&nbsp;A.1.&nbsp;<acronym class="acronym">OGNL</acronym> Operators</b></p><div class="table-contents"><table summary="OGNL Operators" border="1"><colgroup><col class="operator"><col class="getValueNotes"><col class="setValueNotes"></colgroup><thead><tr><th valign="top">Operator</th><th valign="top"><code class="function">getValue()</code> Notes</th><th valign="top"><code class="function">setValue()</code> Notes</th></tr></thead><tbody><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal">,</code> <em class="replaceable"><code>e2</code></em></span></dt><dd><p>Sequence operator</p></dd></dl></div></td><td valign="top">Both <code class="varname">e1</code> and <code class="varname">e2</code> are evaluated with the same source object, and the result of <code class="varname">e2</code> is returned.</td><td valign="top"><code class="function">getValue</code> is called on <code class="varname">e1</code>, and then <code class="function">setValue</code> is called on <code class="varname">e2</code>.</td></tr><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">=</code> <em class="replaceable"><code>e2</code></em></span></dt><dd><p>Assignment operator</p></dd></dl></div></td><td valign="top"><code class="function">getValue</code> is called on <code class="varname">e2</code>, and then <code class="function">setValue</code> is called on <code class="varname">e1</code> with the result of <code class="varname">e2</code> as the target object.</td><td valign="top">Cannot be the top-level expression for <code class="function">setValue</code>.</td></tr><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">?</code> <em class="replaceable"><code>e2</code></em> <code class="literal">:</code> <em class="replaceable"><code>e3</code></em></span></dt><dd><p>Conditional
                            operator</p></dd></dl></div></td><td valign="top"><code class="function">getValue</code> is called on <code class="varname">e1</code> and the result is <a class="link" href="coercion.html#coerceBoolean" title="Interpreting Objects as Booleans">interpreted as a boolean</a>. <code class="function">getValue</code> is then called on either
                            <code class="varname">e2</code> or <code class="varname">e3</code>, depending on whether the result of <code class="varname">e1</code> was <code class="constant">true</code> or <code class="constant">false</code> respectively, and the result is returned.</td><td valign="top"><code class="function">getValue</code> is called on <code class="varname">e1</code>, and then <code class="function">setValue</code> is called on either <code class="varname">e2</code> or <code class="varname">e3</code>.</td></tr><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">||</code> <em class="replaceable"><code>e2</code></em>, </span><span class="term">e1 <code class="literal"> or </code><em class="replaceable"><code>e2</code></em></span></dt><dd><p>Logical
                            <span class="keycode">or</span> operator</p></dd></dl></div></td><td valign="top"><code class="function">getValue</code> is called on <code class="varname">e1</code> and the result is <a class="link" href="coercion.html#coerceBoolean" title="Interpreting Objects as Booleans">interpreted as a boolean</a>. If <code class="constant">true</code>, that result is returned;
                            if <code class="constant">false</code>, <code class="function">getValue</code> is called on <code class="varname">e2</code> and its value is returned.</td><td valign="top"><code class="function">getValue</code> is called on <code class="varname">e1</code>; if <code class="constant">false</code>, <code class="function">setValue</code> is called on <code class="varname">e2</code>. Note that <code class="varname">e1</code> being
                            <code class="constant">true</code> prevents any further setting from taking place.</td></tr><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">&amp;&amp;</code> <em class="replaceable"><code>e2</code></em>, </span><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal"> and </code><em class="replaceable"><code>e2</code></em></span></dt><dd><p>Logical
                            <span class="keycode">and</span> operator</p></dd></dl></div></td><td valign="top"><code class="function">getValue</code> is called on <code class="varname">e1</code> and the result is <a class="link" href="coercion.html#coerceBoolean" title="Interpreting Objects as Booleans">interpreted as a boolean</a>. If <code class="constant">false</code>, that result is returned;
                            if true, <code class="function">getValue</code> is called on e2 and its value is returned.</td><td valign="top"><code class="function">getValue</code> is called on <code class="varname">e1</code>; if <code class="constant">true</code>, <code class="function">setValue</code> is called on <code class="varname">e2</code>. Note that <code class="varname">e1</code> being
                            <code class="constant">false</code> prevents any further setting from taking place.</td></tr><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">|</code> <em class="replaceable"><code>e2</code></em>, </span><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal"> bor </code><em class="replaceable"><code>e2</code></em></span></dt><dd><p>Bitwise
                            <span class="keycode">or</span> operator</p></dd></dl></div></td><td valign="top"><code class="varname">e1</code> and <code class="varname">e2</code> are <a class="link" href="coerceInteger.html" title="Interpreting Objects as Integers">interpreted as integers</a> and the result is an <span class="type">integer</span>.</td><td valign="top">Cannot be the top-level expression passed to <code class="function">setValue</code>.</td></tr><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">^</code> <em class="replaceable"><code>e2</code></em>, </span><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal"> xor </code><em class="replaceable"><code>e2</code></em></span></dt><dd><p>Bitwise
                            exclusive-or operator</p></dd></dl></div></td><td valign="top"><code class="varname">e1</code> and <code class="varname">e2</code> are <a class="link" href="coerceInteger.html" title="Interpreting Objects as Integers">interpreted as integers</a> and the result is an <span class="type">integer</span>.</td><td valign="top">Cannot be the top-level expression passed to <code class="function">setValue</code>.</td></tr><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">&amp;</code> <em class="replaceable"><code>e2</code></em>, </span><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal"> band </code><em class="replaceable"><code>e2</code></em></span></dt><dd><p>Bitwise
                            and operator</p></dd></dl></div></td><td valign="top"><code class="varname">e1</code> and <code class="varname">e2</code> are <a class="link" href="coerceInteger.html" title="Interpreting Objects as Integers">interpreted as integers</a> and the result is an <span class="type">integer</span>.</td><td valign="top">Cannot be the top-level expression passed to <code class="function">setValue</code>.</td></tr><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">==</code> <em class="replaceable"><code>e2</code></em>, </span><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal"> eq </code><em class="replaceable"><code>e2</code></em></span></dt><dd><p>Equality
                            test</p></dd><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">!=</code> <em class="replaceable"><code>e2</code></em>, </span><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal"> neq </code><em class="replaceable"><code>e2</code></em></span></dt><dd><p>Inequality
                            test</p></dd></dl></div></td><td valign="top">Equality is tested for as follows. If either value is <code class="constant">null</code>, they are equal if and only if both are <code class="constant">null</code>. If they are the same object or the
                            <code class="function">equals()</code> method says they are equal, they are equal. If they are both <code class="classname">Number</code>s, they are equal if their values as double-precision floating point numbers are equal. Otherwise,
                            they are not equal. These rules make numbers compare equal more readily than they would normally, if just using the equals method.</td><td valign="top">Cannot be the top-level expression passed to <code class="function">setValue</code>.</td></tr><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">&lt;</code> <em class="replaceable"><code>e2</code></em>, </span><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal"> lt </code><em class="replaceable"><code>e2</code></em></span></dt><dd><p>Less
                            than comparison</p></dd><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">&lt;=</code> <em class="replaceable"><code>e2</code></em>, </span><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal"> lte </code><em class="replaceable"><code>e2</code></em></span></dt><dd><p>Less
                            than or equals comparison</p></dd><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">&gt; </code><em class="replaceable"><code>e2</code></em>, </span><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal"> gt
                            </code><em class="replaceable"><code>e2</code></em></span></dt><dd><p>Greater than comparison</p></dd><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">&gt;=</code> <em class="replaceable"><code>e2</code></em>, </span><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal">
                            gte </code><em class="replaceable"><code>e2</code></em></span></dt><dd><p>Greater than or equals comparison</p></dd><dt><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal"> in</code>
                            <em class="replaceable"><code>e2</code></em></span></dt><dd><p>List membership comparison</p></dd><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">not in</code> <em class="replaceable"><code>e2</code></em></span></dt><dd><p>List
                            non-membership comparison</p></dd></dl></div></td><td valign="top">The ordering operators compare with <code class="function">compareTo()</code> if their arguments are non-numeric and implement <code class="classname">Comparable</code>; otherwise, the arguments are interpreted as
                            numbers and compared numerically. The in operator is not from Java; it tests for inclusion of e1 in e2, where e2 is interpreted as a collection. This test is not efficient: it iterates the collection. However, it uses the
                            standard <acronym class="acronym">OGNL</acronym> equality test.</td><td valign="top">Cannot be the top-level expression passed to <code class="function">setValue</code>.</td></tr><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">&lt;&lt;</code> <em class="replaceable"><code>e2</code></em>, </span><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal"> shl </code><em class="replaceable"><code>e2</code></em></span></dt><dd><p>Bit
                            shift left</p></dd><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">&gt;&gt;</code> <em class="replaceable"><code>e2</code></em>, </span><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal"> shr </code><em class="replaceable"><code>e2</code></em></span></dt><dd><p>Bit
                            shift right</p></dd><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">&gt;&gt;&gt;</code> <em class="replaceable"><code>e2</code></em>, </span><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal"> ushr
                            </code><em class="replaceable"><code>e2</code></em></span></dt><dd><p>Logical shift right</p></dd></dl></div></td><td valign="top"><code class="varname">e1</code> and <code class="varname">e2</code> are <a class="link" href="coerceInteger.html" title="Interpreting Objects as Integers">interpreted as integers</a> and the result is an <span class="type">integer</span>.</td><td valign="top">Cannot be the top-level expression passed to <code class="function">setValue</code>.</td></tr><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="replaceable"><code>e1 </code></em><code class="literal">+</code> <em class="replaceable"><code>e2</code></em></span></dt><dd><p>Addition</p></dd><dt><span class="term"><em class="replaceable"><code>e1</code></em>
                            <code class="literal">-</code> <em class="replaceable"><code>e2</code></em></span></dt><dd><p>Subtraction</p></dd></dl></div></td><td valign="top">The plus operator concatenates strings if its arguments are non-numeric; otherwise it <a class="link" href="coerceNumber.html" title="Interpreting Objects as Numbers">interprets its arguments as numbers</a> and adds them. The minus operator always
                            works on numbers.</td><td valign="top">Cannot be the top-level expression passed to <code class="function">setValue</code>.</td></tr><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="replaceable"><code>e1</code></em><code class="literal">* </code><em class="replaceable"><code>e2</code></em></span></dt><dd><p>Multiplication</p></dd><dt><span class="term"><em class="replaceable"><code>e1</code></em>
                            <code class="literal">/</code> <em class="replaceable"><code>e2</code></em></span></dt><dd><p>Division</p></dd><dt><span class="term"><em class="replaceable"><code>e1</code></em> <code class="literal">%</code> <em class="replaceable"><code>e2</code></em></span></dt><dd><p>Remainder</p></dd></dl></div></td><td valign="top">Multiplication, division, which <a class="link" href="coerceNumber.html" title="Interpreting Objects as Numbers">interpret their arguments as numbers</a>, and remainder, which <a class="link" href="coerceInteger.html" title="Interpreting Objects as Integers">interprets its arguments as integers</a>.</td><td valign="top">Cannot be the top-level expression passed to <code class="function">setValue</code>.</td></tr><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><code class="literal">+ </code><em class="replaceable"><code>e</code></em></span></dt><dd><p>Unary plus</p></dd><dt><span class="term"><code class="literal">-</code>
                            <em class="replaceable"><code>e</code></em></span></dt><dd><p>Unary minus</p></dd><dt><span class="term"><code class="literal">!</code> <em class="replaceable"><code>e</code></em>, </span><span class="term"><code class="literal">not </code><em class="replaceable"><code>e</code></em></span></dt><dd><p>Logical
                            not</p></dd><dt><span class="term"><code class="literal">~</code> <em class="replaceable"><code>e</code></em></span></dt><dd><p>Bitwise not</p></dd><dt><span class="term"><em class="replaceable"><code>e</code></em>
                            <code class="literal">instanceof</code> <em class="replaceable"><code>class</code></em></span></dt><dd><p>Class membership</p></dd></dl></div></td><td valign="top">Unary plus is a no-op, it simply returns the value of its argument. Unary minus <a class="link" href="coerceNumber.html" title="Interpreting Objects as Numbers">interprets its argument as a number</a>. Logical not <a class="link" href="coercion.html#coerceBoolean" title="Interpreting Objects as Booleans">interprets
                            its argument as a boolean</a>. Bitwise not <a class="link" href="coerceInteger.html" title="Interpreting Objects as Integers">interprets its argument as an integer</a>. The <em class="replaceable"><code>class</code></em> argument to instanceof is the fully qualified name of a Java
                            class.</td><td valign="top">Cannot be the top-level expression passed to <code class="function">setValue</code>.</td></tr><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a class="link" href="methods.html" title="Calling Methods"><em class="replaceable"><code>e</code></em><code class="literal">.</code><em class="replaceable"><code>method</code></em><code class="literal">(</code><em class="replaceable"><code>args</code></em><code class="literal">)</code></a></span></dt><dd><p>Method
                            call</p></dd><dt><span class="term"><a class="link" href="properties.html" title="Referring to Properties"><em class="replaceable"><code>e</code></em><code class="literal">.</code><em class="replaceable"><code>property</code></em></a></span></dt><dd><p>Property</p></dd><dt><span class="term"><a class="link" href="indexing.html" title="Indexing"><em class="replaceable"><code>e1</code></em><code class="literal">[</code> <em class="replaceable"><code>e2</code></em> <code class="literal">]</code></a></span></dt><dd><p>Index</p></dd><dt><span class="term"><a class="link" href="projection.html" title="Projecting Across Collections"><em class="replaceable"><code>e1</code></em><code class="literal">.{ </code><em class="replaceable"><code>e2</code></em> <code class="literal">}</code></a></span></dt><dd><p>Projection</p></dd><dt><span class="term"><a class="link" href="selection.html" title="Selecting From Collections"><em class="replaceable"><code>e1</code></em><code class="literal">.{?</code> <em class="replaceable"><code>e2 </code></em><code class="literal">}</code></a></span></dt><dd><p>Selection</p></dd><dt><span class="term"><a class="link" href="chainedSubexpressions.html" title="Chained Subexpressions"><em class="replaceable"><code>e1</code></em><code class="literal">.(</code><em class="replaceable"><code>e2</code></em><code class="literal">)</code></a></span></dt><dd><p>Subexpression evaluation</p></dd><dt><span class="term"><a class="link" href="expressionEvaluation.html" title="Expression Evaluation"><em class="replaceable"><code>e1</code></em><code class="literal">(</code><em class="replaceable"><code>e2</code></em><code class="literal">)</code></a></span></dt><dd><p>Expression evaluation</p></dd></dl></div></td><td valign="top">Generally speaking, navigation chains are evaluated by evaluating the first expression, then evaluating the second one with the result of the first as the source object.</td><td valign="top">Some of these forms can be passed as top-level expressions to <code class="function">setValue</code> and others cannot. Only those chains that end in property references (e.property), indexes (<code class="function">e1[e2]</code>),
                            and subexpressions (<code class="function">e1.(e2)</code>) can be; and expression evaluations can be as well. For the chains, <code class="function">getValue</code> is called on the left-hand expression (<code class="varname">e</code> or
                            <code class="varname">e1</code>), and then <code class="function">setValue</code> is called on the rest with the result as the target object.</td></tr><tr><td valign="top"><div class="variablelist"><dl class="variablelist"><dt><span class="term"><a class="link" href="basicExpressions.html#constants" title="Constants"><em class="replaceable"><code>constant</code></em></a></span></dt><dd><p>Constant</p></dd><dt><span class="term"><a class="link" href="paren.html" title="Parenthetical Expressions"><code class="literal">(</code> <em class="replaceable"><code>e</code></em> <code class="literal">)</code></a></span></dt><dd><p>Parenthesized expression</p></dd><dt><span class="term"><a class="link" href="methods.html" title="Calling Methods"><em class="replaceable"><code>method</code></em><code class="literal">(</code><em class="replaceable"><code>args</code></em><code class="literal">)</code></a></span></dt><dd><p>Method
                            call</p></dd><dt><span class="term"><a class="link" href="properties.html" title="Referring to Properties"><em class="replaceable"><code>property</code></em></a></span></dt><dd><p>Property reference</p></dd><dt><span class="term"><a class="link" href="indexing.html" title="Indexing"><code class="literal">[</code> <em class="replaceable"><code>e</code></em> <code class="literal">]</code></a></span></dt><dd><p>Index reference</p></dd><dt><span class="term"><a class="link" href="collectionConstruction.html#listConstruction" title="Lists"><code class="literal">{
                            </code><em class="replaceable"><code>e</code></em><code class="literal">,</code> ... <code class="literal">}</code></a></span></dt><dd><p>List creation</p></dd><dt><span class="term"><a class="link" href="varref.html" title="Variable References"><code class="literal">#</code><em class="replaceable"><code>variable</code></em></a></span></dt><dd><p>Context
                            variable reference</p></dd><dt><span class="term"><a class="link" href="staticMethods.html" title="Calling Static Methods"><code class="literal">@</code><em class="replaceable"><code>class</code></em><code class="literal">@</code><em class="replaceable"><code>method</code></em><code class="literal">(</code><em class="replaceable"><code>args</code></em><code class="literal">)</code></a></span></dt><dd><p>Static
                            method reference</p></dd><dt><span class="term"><a class="link" href="staticFields.html" title="Getting Static Fields"><code class="literal">@</code><em class="replaceable"><code>class</code></em><code class="literal">@</code><em class="replaceable"><code>field</code></em></a></span></dt><dd><p>Static
                            field reference</p></dd><dt><span class="term"><a class="link" href="constructors.html" title="Calling Constructors"><code class="literal">new</code> <em class="replaceable"><code>class</code></em><code class="literal">(</code><em class="replaceable"><code>args</code></em><code class="literal">)</code></a></span></dt><dd><p>Constructor
                            call</p></dd><dt><span class="term"><a class="link" href="collectionConstruction.html#nativeArrayConstruction" title="Native Arrays"><code class="literal">new </code><em class="replaceable"><code>array-component-class</code></em><code class="literal">[] {</code> <em class="replaceable"><code>e</code></em><code class="literal">,</code>
                            ... <code class="literal">}</code></a></span></dt><dd><p>Array creation</p></dd><dt><span class="term"><a class="link" href="collectionConstruction.html#mapConstruction" title="Maps"><code class="literal">#{</code> <em class="replaceable"><code>e1</code></em>
                            <code class="literal">:</code> <em class="replaceable"><code>e2</code></em><code class="literal">,</code> ... <code class="literal">}</code></a></span></dt><dd><p>Map creation</p></dd><dt><span class="term"><a class="link" href="collectionConstruction.html#mapConstruction" title="Maps"><code class="literal">#@</code><em class="replaceable"><code>classname</code></em><code class="literal">@{
                            </code><em class="replaceable"><code>e1</code></em> <code class="literal">:</code> <em class="replaceable"><code>e2</code></em><code class="literal">,</code> ... <code class="literal">}</code></a></span></dt><dd><p>Map creation with specific subclass</p></dd><dt><span class="term"><a class="link" href="lambdaExpressions.html" title="Pseudo-Lambda Expressions"><code class="literal">:[</code> <em class="replaceable"><code>e</code></em> <code class="literal">]</code></a></span></dt><dd><p>Lambda expression definition</p></dd></dl></div></td><td valign="top">Basic expressions</td><td valign="top">Only property references (<code class="varname">property</code>), indexes (<code class="varname">[e]</code>), and variable references (<code class="varname">#variable</code>) can be passed as top-level expressions to
                            <code class="function">setValue</code>. For indexes, <code class="function">getValue</code> is called on <code class="varname">e</code>, and then the result is used as the property "name" (which might be a <code class="classname">String</code> or any
                            other kind of object) to set in the current target object. Variable and property references are set more directly.</td></tr><tr><td colspan="3"><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td valign="top" align="center" rowspan="2" width="25"><img alt="[Note]" src="../images/admon/note.gif"></td><th align="left">Note</th></tr><tr><td valign="top" align="left"><p>These operators are listed in reverse precedence order</p></td></tr></table></div></td></tr></tbody></table></div></div><br class="table-break"></div></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="coerceCollection.html"><img src="../images/navigation/prev.gif" alt="Prev"></a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;</td></tr><tr><td valign="top" align="left" width="40%">Interpreting Objects as Collections&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html"><img src="../images/navigation/home.gif" alt="Home"></a></td><td valign="top" align="right" width="40%">&nbsp;</td></tr></table></div></body></html>