Класс Expression
- java.lang.Object
-
- java.beans.Statement
-
- java.beans.Expression
public class Expression extends Statement
Объект Expression представляет примитивное выражение, в котором к целевому объекту и набору аргументов применяется единственный метод для возврата результата — как в "a.getFoo()".
Помимо свойств суперкласса, объект Expression предоставляет свойство value, которое является объектом, возвращаемым при вычислении этого выражения. Значение возврата обычно не предоставляется вызывающим методом, а вместо этого вычисляется путём динамического поиска метода и его вызова, когда выполняется первый вызов getValue.
- С момента:
- 1.4
- См. также:
-
getValue(),setValue(java.lang.Object)
Конструкторы
| Конструктор и описание |
|---|
Expression(Object value,
Object target,
String methodName,
Object[] arguments) Создаёт новый объект |
Expression(Object target,
String methodName,
Object[] arguments) Создаёт новый объект |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
execute() Метод |
Object |
getValue() Если свойство value данного экземпляра ещё не задано, этот метод динамически находит метод с заданным именем methodName для этого целевого объекта с этими аргументами и вызывает его. |
void |
setValue(Object value) Устанавливает значение данного выражения в |
String |
toString() Выводит значение этого выражения с использованием синтаксиса Java. |
Методы, унаследованные от класса java.beans.Statement
getArguments, getMethodName, getTarget Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait Конструкторы
Expression
@ConstructorProperties(value={"target","methodName","arguments"})
public Expression(Object target,
String methodName,
Object[] arguments) Создаёт новый объект Expression для указанного целевого объекта, вызывающего метод по указанному имени и массиву аргументов.
Значения target и methodName не должны быть 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.
Значения target и methodName не должны быть null. В противном случае попытка выполнения этого Expression приведёт к NullPointerException. Если значение arguments равно null, в качестве значения свойства arguments используется пустой массив.
- Параметры:
-
value- значение данного выражения -
target- целевой объект данного выражения -
methodName- имя вызываемого метода для указанного целевого объекта -
arguments- массив аргументов для вызова указанного метода - См. также:
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. Обратите внимание, что свойство value устанавливается в значение null, если тип возвращаемого значения основного метода — void.
- Переопределяет:
-
executeв классеStatement - Исключения:
-
NullPointerException- если значение свойстваtargetилиmethodNameравноnull -
NoSuchMethodException- если подходящий метод не найден -
SecurityException- если существует менеджер безопасности и он запрещает вызов метода -
Exception- исключение, сгенерированное вызываемым методом - С момента:
- 1.7
- См. также:
Method
getValue
public Object getValue()
throws Exception Если свойство value этого экземпляра ещё не задано, этот метод динамически находит метод с заданным именем methodName для этого целевого объекта с этими аргументами и вызывает его. Результат вызова метода сначала копируется в свойство value данного выражения, а затем возвращается как результат getValue. Если свойство value уже было установлено, либо вызовом setValue, либо предыдущим вызовом getValue, то свойство value возвращается без поиска или вызова метода.
Свойство value объекта Expression по умолчанию устанавливается в уникальное приватное (не-null) значение, используемое для обозначения того, что метод ещё не был вызван. Значение возврата null заменяет это значение по умолчанию, как и любое другое значение, гарантируя, что выражения вычисляются не более одного раза.
Подробности выбора методов с использованием динамических типов целевого объекта и аргументов см. в методе execute.
- Возвращает:
- Результат применения этого метода к этим аргументам.
- Исключения:
-
Exception- если метод с заданным именем methodName генерирует исключение - См. также:
-
Statement.execute(),setValue(java.lang.Object)
setValue
public void setValue(Object value)
Устанавливает значение данного выражения в value. Это значение будет возвращено методом getValue без вызова метода, связанного с этим выражением.
- Параметры:
-
value- Значение данного выражения. - См. также:
getValue()
toString
public String toString()
Выводит значение этого выражения с использованием синтаксиса Java.
© 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.