# com.bea.p13n.expression.operator
If Class

public final class If
extends `Operator`

Implementation of the If operator. The If operator consists of three parts, the condition, the true action and the false action. If the condition evaluates to true the true action is evaluated otherwise the false condition is evaluated.
Input 1: A Boolean object or Expression returning a Boolean object.
Input 2: An Expression
Input 3 (optional): An Expression.
Returns: The result of evaluating the true or false expression.

Hierarchy
  `Object`
  `ComplexExpressionImpl`
  `Operator`
  `If`

All Implemented Interfaces
  `Cloneable`, `Expression`, `Serializable`

## Constructor Summary

If() Constructs an empty operator and operands can be added later by calling addSubExpression() on this.
If(`Object` logical, `Object` trueEx, `Object` falseEx) Constructs this operator for the given operands.

## Method Summary

`public `Object`` | `getFalseExpression`()
`public `Object`` | `getLogicalExpression`()
`public `Class`[]` | `getParameterSignature`() Returns the parameter signature for this `Expression`.
`public `Object`` | `getTrueExpression`()

Methods from `com.bea.p13n.expression.operator.`Operator``
``leftHandSide`, `operand`, `rightHandSide``

Methods from `com.bea.p13n.expression.internal.`ComplexExpressionImpl``
`addListener, addSubExpression, clearCache, clone, createProxyExpression, equals, getCachedValue, getParent, getSource, getSubExpression, getSubExpressionCount, getUserData, hashCode, isCached, isCacheEnabled, isEqualitySubExpression, notifyListeners, removeAllSubExpressions, removeListener, removeSubExpression, removeSubExpression, setCachedValue, setCacheEnabled, setParent, setSource, setSubExpression, setUserData, toString, write`

Methods from class `java.lang.`Object``
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods from interface `com.bea.p13n.expression.`Expression``
``accept`, `addListener`, `addSubExpression`, `clearCache`, `clone`, `getCachedValue`, `getParameterSignature`, `getParent`, `getSource`, `getSubExpression`, `getSubExpressionCount`, `getUserData`, `isCached`, `isCacheEnabled`, `removeAllSubExpressions`, `removeListener`, `removeSubExpression`, `removeSubExpression`, `setCachedValue`, `setCacheEnabled`, `setSource`, `setSubExpression`, `setUserData`, `write``

## Constructor Detail

### If

    public If()

  Constructs an empty operator and operands can be added later by calling addSubExpression() on this.

### If

    public If(Object logical,
              Object trueEx,
              Object falseEx)

  Constructs this operator for the given operands.

## Method Detail

### getFalseExpression() Method

    public Object getFalseExpression()

### getLogicalExpression() Method

    public Object getLogicalExpression()

### getParameterSignature() Method

    public Class[] getParameterSignature()

Description copied from `Expression.getParameterSignature()`
Returns the parameter signature for this `Expression`. Because the sub-expressions within the `Expression` are typically arguments or operands, some type validation is performed by examining the class types of the sub-expressions against the `Expression`'s parameter signature.
The tests that are performed are:
1. The number of sub-expressions must equals the number of parameter entries.
2. The class type of any sub-expression (or the result of evaluating the sub-expresssion) must equal the class type of the corresponding parameter entry.
3. Any null parameter entries are ignored and are considered optional sub-expressions.

#### Returns

the Class array containing the parameter signature.

### getTrueExpression() Method

    public Object getTrueExpression()