Класс Expression

public class Expression
extends Statement

Объект типа Expression представляет примитивное выражение, в котором один метод применяется к целевому объекту и набору аргументов для возвращения результата — как в "a.getFoo()".

Помимо свойств суперкласса, объект Expression предоставляет свойство value, которое является объектом, возвращаемым при вычислении этого выражения. Значение возврата обычно не предоставляется вызывающей стороной, а вместо этого вычисляется путём динамического поиска метода и его вызова, когда выполняется первый вызов getValue.

Since:
1.4
See Also:
getValue(), setValue(java.lang.Object)

Конструкторы

КонструкторОписание
Expression​(Object value, Object target, String methodName, Object[] arguments)

Создаёт новый объект Expression со значением, указанным для целевого объекта, вызывая метод, заданный именем и массивом аргументов.

Expression​(Object target, String methodName, Object[] arguments)

Создаёт новый объект Expression для целевого объекта, вызывая метод, заданный именем и массивом аргументов.

Методы

Модификатор и типМетодОписание
voidexecute()

Метод execute находит метод с именем, совпадающим со свойством methodName, и вызывает этот метод для целевого объекта.

ObjectgetValue()

Если свойство value этого экземпляра ещё не задано, этот метод динамически находит метод с заданным именем methodName для этого целевого объекта с этими аргументами и вызывает его.

voidsetValue​(Object value)

Устанавливает значение этого выражения в value.

StringtoString()

Выводит значение этого выражения с использованием синтаксиса Java.

Методы, объявленные в классе java.beans.Statement

getArguments, getMethodName, getTarget

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Конструкторы

Expression

@ConstructorProperties({"target","methodName","arguments"})
public Expression(Object target,
                  String methodName,
                  Object[] arguments)

Создаёт новый объект Expression для целевого объекта, вызывая метод, заданный именем и массивом аргументов.

Значения target и methodName не должны быть null. В противном случае попытка выполнить этот Expression приведёт к NullPointerException. Если значение arguments равно null, в качестве значения свойства arguments используется пустой массив.

Parameters:
target — целевой объект этого выражения
methodName — имя метода для вызова на указанном целевом объекте
arguments — массив аргументов для вызова указанного метода
See Also:
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 используется пустой массив.

Parameters:
value — значение этого выражения
target — целевой объект этого выражения
methodName — имя метода для вызова на указанном целевом объекте
arguments — массив аргументов для вызова указанного метода
See Also:
setValue(java.lang.Object)

Методы

execute

public void execute()
             throws Exception

Метод execute находит метод с именем, совпадающим со свойством methodName, и вызывает этот метод для целевого объекта. Если класс целевого объекта определяет несколько методов с заданным именем, реализация должна выбрать наиболее конкретный метод, используя алгоритм, указанный в спецификации языка Java (15.11). Динамический класс целевого объекта и аргументов используется вместо информации о типе во время компиляции, и, как и сам класс Method, преобразование между примитивными значениями и связанными с ними классами-обёртками выполняется внутри.

Следующие типы методов обрабатываются как специальные случаи:

  • Статические методы могут вызываться, используя объект класса в качестве целевого объекта.
  • Зарезервированное имя метода "new" может использоваться для вызова конструктора класса, как если бы все классы определяли статические методы "new". Вызовы конструкторов обычно рассматриваются как Expression, а не как Statement, так как они возвращают значение.
  • Имена методов "get" и "set", определённые в интерфейсе List, также могут применяться к экземплярам массивов, отображаясь на статические методы с тем же именем в классе Array.

Если вызываемый метод завершается успешно, возвращаемое им значение копируется в свойство value. Обратите внимание, что свойство returnValue устанавливается в null, если тип возвращаемого значения базового метода равен void.

Overrides:
execute в классе Statement
Throws:
NullPointerException — если значение свойства target или methodName равно null
NoSuchMethodException — если метод с совпадающим именем не найден
SecurityException — если существует менеджер безопасности и он запрещает вызов метода
Exception — которое выбрасывается вызываемым методом
Since:
1.7
See Also:
Method

getValue

public Object getValue()
                throws Exception

Если свойство value этого экземпляра ещё не задано, этот метод динамически находит метод с заданным именем methodName для этого целевого объекта с этими аргументами и вызывает его. Результат вызова метода сначала копируется в свойство value этого выражения, а затем возвращается как результат getValue. Если свойство value уже установлено, либо путём вызова setValue, либо предыдущим вызовом getValue, то свойство value возвращается без поиска или вызова метода.

Свойство value объекта Expression по умолчанию устанавливается в уникальное частное (не-null) значение, и это значение используется как внутренний индикатор того, что метод ещё не был вызван. Значение возврата null заменяет это значение по умолчанию таким же образом, как и любое другое значение, гарантируя, что выражения не вычисляются более одного раза.

См. метод execute для получения подробной информации о том, как выбираются методы, используя динамические типы целевого объекта и аргументов.

Returns:
Результат применения этого метода к этим аргументам.
Throws:
Exception — если метод с заданным methodName выбрасывает исключение
See Also:
Statement.execute(), setValue(java.lang.Object)

setValue

public void setValue(Object value)

Устанавливает значение этого выражения в value. Это значение будет возвращено методом getValue без вызова метода, связанного с этим выражением.

Parameters:
value — значение этого выражения.
See Also:
getValue()

toString

public String toString()

Выводит значение этого выражения с использованием синтаксиса Java.

Overrides:
toString в классе Statement
Returns:
строковое представление объекта.

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/beans/Expression.html

Spec-Zone .ru
спецификации, руководства, описания, API