public abstract class Expression extends ObjectSE implements SerializableSE
ValueExpression
および MethodExpression
の基本クラス。両方に共通の特性を実装します。2 つの式が等しいかどうかを比較できるように、すべての式は equals()
および hashCode()
メソッドを実装する必要があります。これらは、サブクラスでの実装を強制するために、このクラスで再定義された抽象です。
保存および復元できるように、すべての式も Serializable
である必要があります。
Expression
も不変に設計されているため、任意の式 String/FunctionMapper
に対してインスタンスを 1 つだけ作成する必要があります。これにより、コンテナーは式を事前に作成でき、評価されるたびに式を再解析する必要がなくなります。
コンストラクターと説明 |
---|
Expression() |
修飾子と型 | メソッドと説明 |
---|---|
abstract boolean | equals(ObjectSE obj) 指定されたオブジェクトがこの Expression と等しいかどうかを判断します。 |
abstract StringSE | getExpressionString() この Expression の作成に使用された元の文字列を変更せずに返します。 |
abstract int | hashCode() この Expression のハッシュコードを返します。 |
abstract boolean | isLiteralText() この式がリテラルテキストのみから作成されたかどうかを返します。 |
cloneSE, finalizeSE, getClassSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public abstract StringSE getExpressionString()
Expression
の作成に使用された元の文字列を変更せずに返します。これは、デバッグの目的だけでなく、比較の目的でも使用されます(たとえば、構成ファイルの式が変更されていないことを確認するため)。
このメソッドは、式を再作成するための十分な情報を提供しません。2 つの異なる式は、式文字列はまったく同じで関数マッピングが異なる場合があります。Expression
の状態を保存および復元するには、直列化を使用する必要があります。
public abstract boolean equals(ObjectSE obj)
Expression
と等しいかどうかを判断します。 引数が null
ではなく、同じ型(ValueExpression
または MethodExpression
)であり、解析された表現が同じである Expression
オブジェクトの場合、結果は true
になります。
式の文字列が異なる場合、2 つの式が等しい場合があることに注意してください。例: ${fn1:foo()}
と ${fn2:foo()}
は、対応する FunctionMapper
が fn1:foo
と fn2:foo
を同じメソッドにマッピングした場合に等しくなります。
ObjectSE
の equalsSE
obj
- Object
が等しいかどうかをテストします。obj
がこの Expression
と等しい場合は true
。それ以外の場合は false
。Hashtable
SE, Object.equals(java.lang.Object)
SEpublic abstract int hashCode()
Expression
のハッシュコードを返します。 式の文字列が異なる場合に 2 つの式を等しくする方法については、equals(java.lang.Object)
メソッドのメモを参照してください。equals(Object)
メソッドに従って 2 つのオブジェクトが等しい場合、2 つのオブジェクトのそれぞれで hashCode
メソッドを呼び出すと、同じ整数の結果が生成される必要があることを思い出してください。実装では、特別な注意を払い、hashCode
を正しく実装する必要があります。
ObjectSE
の hashCodeSE
Expression
のハッシュコード。equals(java.lang.Object)
, Hashtable
SE, Object.hashCode()
SEpublic abstract boolean isLiteralText()
このメソッドは、この式が作成された式文字列にエスケープされていない Jakarta Expression Language デリミタ(${...}
または #{...}
)が含まれていない場合にのみ、true
を返す必要があります。
true
(この式がリテラルテキストのみから作成された場合)。それ以外の場合は false
。Copyright © 2018,2020 Eclipse Foundation.
Use is subject to license terms.