public class Statement extends Object
Statement
对象表示一个原始语句,其中单个方法应用于目标和一组参数 - 如"a.setFoo(b)"
。
请注意,此示例使用名称来表示目标及其参数,语句对象不需要名称空间,并且使用值本身构造。
语句对象将named方法与其环境相关联,作为一组简单的值:目标和参数值数组。
Constructor and Description |
---|
Statement(Object target, String methodName, Object[] arguments)
为指定的目标对象创建一个新的 Statement 对象,以调用由名称和参数数组指定的方法。
|
@ConstructorProperties(value={"target","methodName","arguments"}) public Statement(Object target, String methodName, Object[] arguments)
Statement
对象,以调用由名称和参数数组指定的方法。
target
和methodName
值不应该是null
。 否则尝试执行此Expression
将导致NullPointerException
。 如果arguments
值为null
,则使用空数组作为arguments
属性的值。
target
- 此语句的目标对象
methodName
- 在指定目标上调用方法的名称
arguments
- 调用指定方法的参数数组
public Object getTarget()
null
,那么execute()
方法会抛出一个NullPointerException
。
public String getMethodName()
null
,那么execute()
方法会抛出一个NullPointerException
。
public Object[] getArguments()
null
可以用作空数组的同义词。
public void execute() throws 异常
execute
方法查找名称与methodName
属性相同的方法,并调用目标方法。
当目标的类定义了具有给定名称的许多方法时,实现应使用Java语言规范(15.11)中指定的算法选择最具体的方法。
目标和参数的动态类用于代替编译时类型信息,像方法
类一样,原始值与其关联的包装器类之间的转换在内部进行处理。
以下方法类型被处理为特殊情况:
Expression
,而不是Statement
,因为它们返回一个值。 List
接口中定义的方法名称“get”和“set”也可以应用于阵列实例,映射到Array
类中同名的静态方法。 NullPointerException
- 如果
target
或
methodName
属性的值为
null
NoSuchMethodException
- 如果找不到匹配的方法
SecurityException
- 如果安全管理器存在,并拒绝方法调用
异常
- 被调用方法抛出的
方法