/*
 * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package com.sun.codemodel.internal;


A Java expression.

Unlike most of CodeModel, JExpressions are built bottom-up ( meaning you start from leaves and then gradually build compliated expressions by combining them.)

JExpression defines a series of composer methods, which returns a complicated expression (by often taking other JExpressions as parameters. For example, you can build "5+2" by JExpr.lit(5).add(JExpr.lit(2))

/** * A Java expression. * * <p> * Unlike most of CodeModel, JExpressions are built bottom-up ( * meaning you start from leaves and then gradually build compliated expressions * by combining them.) * * <p> * {@link JExpression} defines a series of composer methods, * which returns a complicated expression (by often taking other {@link JExpression}s * as parameters. * For example, you can build "5+2" by * {@code JExpr.lit(5).add(JExpr.lit(2))} */
public interface JExpression extends JGenerable {
Returns "-[this]" from "[this]".
/** * Returns "-[this]" from "[this]". */
JExpression minus();
Returns "![this]" from "[this]".
/** * Returns "![this]" from "[this]". */
JExpression not();
Returns "~[this]" from "[this]".
/** * Returns "~[this]" from "[this]". */
JExpression complement();
Returns "[this]++" from "[this]".
/** * Returns "[this]++" from "[this]". */
JExpression incr();
Returns "[this]--" from "[this]".
/** * Returns "[this]--" from "[this]". */
JExpression decr();
Returns "[this]+[right]"
/** * Returns "[this]+[right]" */
JExpression plus(JExpression right);
Returns "[this]-[right]"
/** * Returns "[this]-[right]" */
JExpression minus(JExpression right);
Returns "[this]*[right]"
/** * Returns "[this]*[right]" */
JExpression mul(JExpression right);
Returns "[this]/[right]"
/** * Returns "[this]/[right]" */
JExpression div(JExpression right);
Returns "[this]%[right]"
/** * Returns "[this]%[right]" */
JExpression mod(JExpression right);
Returns "[this]<<[right]"
/** * Returns "[this]&lt;&lt;[right]" */
JExpression shl(JExpression right);
Returns "[this]>>[right]"
/** * Returns "{@code [this]>>[right]}" */
JExpression shr(JExpression right);
Returns "[this]>>>[right]"
/** * Returns "{@code [this]>>>[right]}" */
JExpression shrz(JExpression right);
Bit-wise AND '&'.
/** Bit-wise AND '&amp;'. */
JExpression band(JExpression right);
Bit-wise OR '|'.
/** Bit-wise OR '|'. */
JExpression bor(JExpression right);
Logical AND '&&'.
/** Logical AND '&amp;&amp;'. */
JExpression cand(JExpression right);
Logical OR '||'.
/** Logical OR '||'. */
JExpression cor(JExpression right); JExpression xor(JExpression right); JExpression lt(JExpression right); JExpression lte(JExpression right); JExpression gt(JExpression right); JExpression gte(JExpression right); JExpression eq(JExpression right); JExpression ne(JExpression right);
Returns "[this] instanceof [right]"
/** * Returns "[this] instanceof [right]" */
JExpression _instanceof(JType right);
Returns "[this].[method]". Arguments shall be added to the returned JInvocation object.
/** * Returns "[this].[method]". * * Arguments shall be added to the returned {@link JInvocation} object. */
JInvocation invoke(JMethod method);
Returns "[this].[method]". Arguments shall be added to the returned JInvocation object.
/** * Returns "[this].[method]". * * Arguments shall be added to the returned {@link JInvocation} object. */
JInvocation invoke(String method); JFieldRef ref(JVar field); JFieldRef ref(String field); JArrayCompRef component(JExpression index); }