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

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

        重写:
        executeStatement
        异常
        NullPointerException - 如果 targetmethodName属性的值为 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()
      • toString

        public String toString​()
        使用Java风格的语法打印此表达式的值。
        重写:
        toStringStatement
        结果
        对象的字符串表示形式。