public class Expression extends Statement
Expression
オブジェクトは、"a.getFoo()"
のように、ターゲットと一連の引数に単一のメソッドが適用されて、結果が返されるプリミティブな式を表します。
Expression
オブジェクトは、スーパークラスのプロパティーだけでなく、値 (この式の評価時に返されるオブジェクト) も提供します。通常、この戻り値は呼び出し元から提供されるのではなく、メソッドを動的に検索し、初めて getValue
を呼び出すときにそのメソッドを呼び出すことによって計算されます。
getValue()
, setValue(java.lang.Object)
コンストラクタと説明 |
---|
Expression(Object value, Object target, String methodName, Object[] arguments)
指定されたターゲットオブジェクトの指定された値を使って新しい
Expression オブジェクトを作成して、名前、および引数の配列で指定されたメソッドを呼び出します。 |
Expression(Object target, String methodName, Object[] arguments)
指定されたターゲットオブジェクトの新しい
Expression オブジェクトを作成して、名前、および引数の配列で指定されたメソッドを呼び出します。 |
修飾子と型 | メソッドと説明 |
---|---|
void |
execute()
execute メソッドは、methodName プロパティーと同じ名前のメソッドを検索し、ターゲットに対してそのメソッドを呼び出します。 |
Object |
getValue()
このインスタンスの value プロパティーがまだ設定されていない場合、このメソッドは引数を使って、ターゲット上の指定された methodName からメソッドを動的に検索し、呼び出します。
|
void |
setValue(Object value)
この式の値を
value に設定します。 |
String |
toString()
Java スタイルの構文を使って、この式の値を出力します。
|
getArguments, getMethodName, getTarget
@ConstructorProperties(value={"target","methodName","arguments"}) public Expression(Object target, String methodName, Object[] arguments)
Expression
オブジェクトを作成して、名前、および引数の配列で指定されたメソッドを呼び出します。
target
および methodName
の値を null
にしないでください。そうしない場合、この Expression
の実行を試みると、NullPointerException
が発生します。arguments
値が null
の場合は、空の配列が arguments
プロパティーの値として使用されます。
target
- この式のターゲットオブジェクトmethodName
- 指定されたターゲットに対して呼び出すメソッドの名前arguments
- 指定されたメソッドを呼び出す引数の配列getValue()
public Expression(Object value, Object target, String methodName, Object[] arguments)
Expression
オブジェクトを作成して、名前、および引数の配列で指定されたメソッドを呼び出します。value
値が value
プロパティーの値として使用されるため、getValue()
メソッドはこの Expression
を実行せずにそれを返します。
target
および methodName
の値を null
にしないでください。そうしない場合、この Expression
の実行を試みると、NullPointerException
が発生します。arguments
値が null
の場合は、空の配列が arguments
プロパティーの値として使用されます。
value
- この式の値target
- この式のターゲットオブジェクトmethodName
- 指定されたターゲットに対して呼び出すメソッドの名前arguments
- 指定されたメソッドを呼び出す引数の配列setValue(java.lang.Object)
public void execute() throws Exception
execute
メソッドは、methodName
プロパティーと同じ名前のメソッドを検索し、ターゲットに対してそのメソッドを呼び出します。
ターゲットのクラスが指定の名前で複数のメソッドを定義している場合、実装は『Java 言語仕様 (15.11)』に規定されているアルゴリズムを使って、もっとも本質的なメソッドを選択しなければいけません。コンパイル時の型情報の代わりにターゲットと引数の動的クラスが使用され、Method
クラスそのものと同様に、プリミティブ値とその関連ラッパークラス間の変換は内部で処理されます。
次のメソッド型は、特殊なケースとして処理されます。
Statement
ではなく Expression
とみなされます。
List
インタフェースに定義されているメソッド名「get」および「set」が配列のインスタンスにも適用されて、Array
クラスにある同じ名前の静的メソッドにマッピングされます。
呼び出されたメソッドが正常に完了した場合は、そのメソッドが返した値が value
プロパティーにコピーされます。基本となるメソッドの戻り型が void
の場合は、value
プロパティーに null
が設定されます。
execute
、クラス: Statement
NullPointerException
- target
または methodName
プロパティーの値が null
の場合NoSuchMethodException
- 一致するメソッドが見つからない場合SecurityException
- セキュリティーマネージャーが存在し、それがメソッドの呼び出しを拒否する場合Exception
- 呼び出されたメソッドによってスローされますMethod
public Object getValue() throws Exception
getValue
の結果として返されます。value プロパティーがすでに設定されている場合は、setValue
の呼び出しか、以前の getValue
の呼び出しにより、value プロパティーが返されます。この場合、メソッドの検索や呼び出しは不要です。
デフォルトでは、Expression
の value プロパティーは非公開の一意の値 (null
以外) になり、メソッドがまだ呼び出されていないことを内部的に示します。戻り値 null
は、その他の値と同様にこのデフォルト値を置き換えます。このため、式の評価回数が 2 回以上になることはありません。
動的なターゲットおよび引数によるメソッドの選択方法の詳細については、excecute
メソッドを参照してください。
Exception
Statement.execute()
, setValue(java.lang.Object)
public void setValue(Object value)
value
に設定します。この値は getValue メソッドから返されます。このとき、この式に関連付けられているメソッドが呼び出されることはありません。value
- この式の値。getValue()
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.