Класс Expression
public class Expression extends Statement
Expression представляет простое выражение, в котором к целевому объекту применяется один метод с набором аргументов для получения результата — как в "a.getFoo()". Помимо свойств суперкласса, объект Expression предоставляет значение, представляющее собой объект, возвращаемый при вычислении этого выражения. Обычно вызывающая сторона не предоставляет возвращаемое значение; вместо этого оно вычисляется путём динамического поиска метода и его вызова при первом обращении к getValue.
- Начиная с:
- 1.4
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Expression |
Создаёт новый объект Expression с указанным значением для заданного целевого объекта, чтобы вызвать метод, указанный именем и массивом аргументов. |
Expression |
Создаёт новый объект Expression для заданного целевого объекта, чтобы вызвать метод, указанный именем и массивом аргументов. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
execute() |
Метод execute находит метод, имя которого совпадает со свойством methodName, и вызывает его для целевого объекта. |
Object |
getValue() |
Если свойство value этого экземпляра ещё не задано, этот метод динамически находит у целевого объекта метод с указанным именем methodName и заданными аргументами, а затем вызывает его. |
void |
setValue |
Задаёт для этого выражения значение value. |
String |
toString() |
Выводит значение этого выражения, используя синтаксис в стиле Java. |
Методы, объявленные в классе 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— массив аргументов для вызова указанного метода - См. также:
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— массив аргументов для вызова указанного метода - См. также:
Подробное описание методов
execute
public void execute() throws Exception
execute находит метод, имя которого совпадает со свойством methodName, и вызывает его для целевого объекта. Если класс целевого объекта определяет несколько методов с заданным именем, реализация должна выбрать наиболее подходящий метод, используя алгоритм, описанный в спецификации языка Java (15.11). Вместо информации о типах времени компиляции используются динамические классы целевого объекта и аргументов; как и в самом классе Method, преобразование между примитивными значениями и соответствующими классами-обёртками выполняется внутри. Особым образом обрабатываются следующие типы методов:
- Статические методы можно вызывать, передав в качестве целевого объекта объект класса.
- Зарезервированное имя метода "new" можно использовать для вызова конструктора класса, как если бы все классы определяли статические методы "new". Вызовы конструкторов обычно считаются
Expressionами, а неStatementами, поскольку они возвращают значение. - Имена методов "get" и "set", определённые в интерфейсе
List, также можно применять к экземплярам массивов; они сопоставляются со статическими методами с теми же именами в классеArray.
Если вызванный метод завершается нормально, возвращаемое им значение копируется в свойство value. Обратите внимание, что свойству value присваивается значение null, если тип возвращаемого значения исходного метода — void.
- Переопределяет:
-
executeв классеStatement - Выбрасывает:
-
NullPointerException— если значение свойстваtargetилиmethodNameравноnull -
NoSuchMethodException— если подходящий метод не найден -
Exception— исключение, выброшенное вызываемым методом - Начиная с:
- 1.7
- См. также:
getValue
public Object getValue() throws Exception
getValue. Если свойство value уже было задано — вызовом setValue или предыдущим вызовом getValue, — оно возвращается без поиска или вызова метода. По умолчанию свойству value объекта Expression присваивается уникальное закрытое значение (не-null); это значение используется как внутренний признак того, что метод ещё не вызывался. Возвращаемое значение null заменяет это значение по умолчанию так же, как и любое другое значение, гарантируя, что выражения вычисляются не более одного раза.
Сведения о том, как методы выбираются с учётом динамических типов целевого объекта и аргументов, см. в описании метода execute.
- Возвращает:
- Результат применения этого метода к этим аргументам.
- Выбрасывает:
-
Exception— если метод с указанным именем methodName выбрасывает исключение - См. также:
setValue
public void setValue(Object value)
value. Метод getValue вернёт это значение, не вызывая метод, связанный с этим выражением.- Параметры:
-
value— значение этого выражения. - См. также:
toString
© 1993, 2025, 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/25/docs/api/java.desktop/java/beans/Expression.html