java.lang.Object
java.beans.Statement
java.beans.Expression
一个
Expression对象表示一个原始表达式,在这个表达式中,一个方法被应用于一个目标和一组参数,以返回一个结果 - 就像"a.getFoo()"。
除了超类的属性之外,Expression对象提供了一个value,当评估这个表达式时返回的对象。返回值通常不是由调用者提供的,而是在第一次调用getValue时通过动态查找方法并调用来计算。
- 自从:
- 1.4
- 参见:
-
Constructor Summary
ConstructorsConstructorDescriptionExpression(Object value, Object target, String methodName, Object[] arguments) 创建一个新的Expression对象,为指定的目标对象提供指定的值,以调用指定名称和参数数组的方法。Expression(Object target, String methodName, Object[] arguments) 为指定的目标对象创建一个新的Expression对象,以调用指定名称和参数数组的方法。 -
Method Summary
Methods declared in class java.beans.Statement
getArguments, getMethodName, getTarget
-
Constructor Details
-
Expression
@ConstructorProperties({"target","methodName","arguments"}) public Expression(Object target, String methodName, Object[] arguments) 为指定的目标对象创建一个新的Expression对象,以调用指定名称和参数数组的方法。target和methodName值不应为null。否则,尝试执行此Expression将导致NullPointerException。如果arguments值为null,则将使用空数组作为arguments属性的值。- 参数:
-
target- 此表达式的目标对象 -
methodName- 要在指定目标上调用的方法的名称 -
arguments- 要调用指定方法的参数数组 - 参见:
-
Expression
创建一个新的Expression对象,为指定的目标对象提供指定的值,以调用指定名称和参数数组的方法。value值被用作value属性的值,因此getValue()方法将在不执行此Expression的情况下返回它。target和methodName值不应为null。否则,尝试执行此Expression将导致NullPointerException。如果arguments值为null,则将使用空数组作为arguments属性的值。- 参数:
-
value- 此表达式的值 -
target- 此表达式的目标对象 -
methodName- 要在指定目标上调用的方法的名称 -
arguments- 要调用指定方法的参数数组 - 参见:
-
-
Method Details
-
execute
execute方法查找一个方法,其名称与methodName属性相同,并在目标上调用该方法。当目标的类定义了许多具有相同名称的方法时,实现应该使用Java语言规范(15.11中指定的算法)选择最具体的方法。目标和参数的动态类用于替代编译时类型信息,就像Method类本身一样,原始值和它们关联的包装类之间的转换在内部处理。以下方法类型被视为特殊情况:
- 可以通过使用类对象作为目标来调用静态方法。
- 保留的方法名称"new"可用于调用类的构造函数,就好像所有类都定义了静态的"new"方法。构造函数调用通常被视为
Expression而不是Statement,因为它们返回一个值。 - List接口中定义的方法名称"get"和"set"也可以应用于数组实例,映射到
Array类中同名的静态方法。
如果调用的方法正常完成,则它返回的值将被复制到
value属性中。请注意,如果底层方法的返回类型为void,则value属性将设置为null。- 覆盖:
-
execute在类Statement中 - 抛出:
-
NullPointerException- 如果target或methodName属性的值为null -
NoSuchMethodException- 如果找不到匹配的方法 -
SecurityException- 如果存在安全管理器并且拒绝方法调用 -
Exception- 被调用方法抛出的异常 - 自从:
- 1.7
- 参见:
-
getValue
如果此实例的value属性尚未设置,则此方法会动态查找具有指定methodName的方法,并在此目标上调用它。方法调用的结果首先复制到此表达式的value属性中,然后作为getValue的结果返回。如果value属性已经被设置,无论是通过调用setValue还是先前调用getValue,则value属性将被返回,而不会查找或调用方法。Expression的value属性默认设置为一个唯一的私有(非null)值,此值用作内部指示,表明方法尚未被调用。任何其他值都会替换此默认值,确保表达式永远不会被评估多次。有关如何使用目标和参数的动态类型选择方法的详细信息,请参阅
execute方法。- 返回:
- 将此方法应用于这些参数的结果。
- 抛出:
-
Exception- 如果具有指定methodName的方法抛出异常 - 参见:
-
setValue
将此表达式的值设置为value。这个值将通过getValue方法返回,而不调用与此表达式相关的方法。- 参数:
-
value- 此表达式的值。 - 参见:
-
toString
使用Java风格的语法打印此表达式的值。
-