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风格的语法打印此表达式的值。
-