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