模块  java.desktop
软件包  java.beans

Class Expression


  • public class Expression
    extends Statement
    Expression对象表示一个原始表达式,其中单个方法应用于目标,一组参数返回结果 - 如"a.getFoo()"

    除了超类的属性之外, Expression对象还提供了一个 ,该是在计算此表达式时返回的对象。 返回值通常不由调用者提供,而是通过动态查找方法并在第一次调用getValue时调用它来计算。

    从以下版本开始:
    1.4
    另请参见:
    getValue()setValue(java.lang.Object)
    • 构造方法详细信息

      • Expression

        @ConstructorProperties({"target","methodName","arguments"})
        public Expression​(Object target,
                          String methodName,
                          Object[] arguments)
        为指定的目标对象创建一个新的Expression对象,以调用由名称和参数数组指定的方法。

        targetmethodName值不应该是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

        targetmethodName值不应为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 s,因为它们返回一个值。
        • List接口中定义的方法名称“get”和“set”也可以应用于数组实例,映射到Array类中的同名静态方法。

        如果调用的方法正常完成,则返回的值将复制到value属性中。 请注意,如果基础方法的返回类型为null ,则value属性设置为void

        重写:
        execute在课程 Statement
        异常
        NullPointerException - 如果 targetmethodName属性的值是 null
        NoSuchMethodException - 如果找不到匹配的方法
        SecurityException - 如果存在安全管理器并且它拒绝方法调用
        异常 - 被调用的方法抛出的内容
        从以下版本开始:
        1.7
        另请参见:
        方法
      • getValue

        public Object getValue()
                        throws 异常
        如果尚未设置此实例的value属性,则此方法使用这些参数在此目标上动态查找具有指定methodName的方法并调用它。 首先将方法调用的结果复制到此表达式的value属性中,然后作为getValue的结果返回。 如果已经通过调用setValue或之前调用getValue了value属性,则返回value属性而不查找或调用方法。

        默认情况下, Expression的value属性设置为唯一的私有(非null )值,此值用作尚未调用该方法的内部指示。 返回值null与任何其他值相同的方式替换此默认值,从而确保表达式永远不会被评估多次。

        有关如何使用目标和参数的动态类型选择方法的详细信息,请参见execute方法。

        结果
        将此方法应用于这些参数的结果。
        异常
        异常 - 如果具有指定methodName的方法抛出异常
        另请参见:
        Statement.execute()setValue(java.lang.Object)
      • setValue

        public void setValue​(Object value)
        将此表达式的值设置为value getValue方法将返回此值,而不调用与此表达式关联的方法。
        参数
        value - 此表达式的值。
        另请参见:
        getValue()
      • toString

        public String toString()
        使用Java样式语法打印此表达式的值。
        重写:
        toString在课程 Statement
        结果
        对象的字符串表示形式。