public class Expression extends Statement
Expression
对象表示一个原始表达式,其中单个方法应用于目标和一组参数以返回结果 - 如"a.getFoo()"
。
除了超级类的属性外, Expression
对象提供了一个值 ,该值是评估此表达式时返回的对象。 返回值通常不由调用者提供,而是通过动态地找到方法并在第一次调用getValue
时调用该方法来计算。
getValue()
,
setValue(java.lang.Object)
Constructor and Description |
---|
Expression(Object value, Object target, String methodName, Object[] arguments)
使用指定的目标对象的指定值创建一个新的 Expression 对象,以调用由名称和参数数组指定的方法。
|
Expression(Object target, String methodName, Object[] arguments)
为指定的目标对象创建一个新的 Expression 对象,以调用由名称和参数数组指定的方法。
|
Modifier and Type | Method and Description |
---|---|
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 异常
execute
方法查找名称与methodName
属性相同的方法,并调用目标方法。
当目标的类定义了具有给定名称的许多方法时,实现应使用Java语言规范(15.11)中指定的算法选择最具体的方法。
目标和参数的动态类用于代替编译时类型信息,像方法
类一样,原始值与其关联的包装器类之间的转换在内部进行处理。
以下方法类型被处理为特殊情况:
Expression
,而不是Statement
,因为它们返回一个值。 List
接口中定义的方法名称“get”和“set”也可以应用于数组实例,映射到Array
类中同名的静态方法。 如果调用的方法正常完成,则返回的值将复制到value
属性中。 请注意, value
属性设置为null
,如果底层方法的返回类型为void
。
execute
在
Statement
NullPointerException
- 如果
target
或
methodName
属性的值是
null
NoSuchMethodException
- 如果找不到匹配的方法
SecurityException
- 如果安全管理器存在且拒绝方法调用
异常
- 被调用的方法抛出的
方法
public Object getValue() throws 异常
getValue
的结果返回。
如果value属性已设置,则通过调用setValue
或先前调用getValue
然后返回value属性,而无需查找或调用该方法。
默认情况下, Expression
的value属性设置为唯一的私有(非null
)值,该值用作该方法尚未被调用的内部指示。 返回值null
以与任何其他值相同的方式替换此默认值,以确保表达式从不被评估多次。
有关如何使用目标和参数的动态类型选择方法的详细信息,请参阅execute
方法。
异常
- 如果具有指定methodName的方法抛出异常
Statement.execute()
,
setValue(java.lang.Object)
public void setValue(Object value)
value
。
该值将由getValue方法返回,而不调用与此表达式关联的方法。
value
- 此表达式的值。
getValue()