Класс Encoder
- java.lang.Object
-
- java.beans.Encoder
- Прямые известные подклассы:
XMLEncoder
public class Encoder extends Object
Класс Encoder — это класс, который можно использовать для создания файлов или потоков, кодирующих состояние набора JavaBeans с точки зрения их публичных API. Класс Encoder, совместно со своими делегатами сохранения, отвечает за разбиение графа объектов на серию Statement и Expression, которые могут быть использованы для его создания. Подкласс обычно предоставляет синтаксис для этих выражений, используя какой-либо удобочитаемый формат — например, исходный код Java или XML.
- С момента:
- 1.4
Конструкторы
| Конструктор | Описание |
|---|---|
Encoder() |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
Object |
get(Object oldInstance) |
Возвращает предварительное значение для |
ExceptionListener |
getExceptionListener() |
Получает обработчик исключений для этого потока. |
PersistenceDelegate |
getPersistenceDelegate(Class<?> type) |
Возвращает делегата сохранения для данного типа. |
Object |
remove(Object oldInstance) |
Удаляет запись для этого экземпляра, возвращая старую запись. |
void |
setExceptionListener(ExceptionListener exceptionListener) |
Устанавливает обработчик исключений для этого потока в |
void |
setPersistenceDelegate(Class<?> type,
PersistenceDelegate delegate) |
Связывает указанный делегат сохранения с данным типом. |
void |
writeExpression(Expression oldExp) |
Реализация сначала проверяет, не было ли уже записано выражение с этим значением. |
protected void |
writeObject(Object o) |
Записывает указанный объект в поток вывода. |
void |
writeStatement(Statement oldStm) |
Записывает утверждение |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Конструкторы
Encoder
public Encoder()
Методы
writeObject
protected void writeObject(Object o)
Записывает указанный объект в поток вывода. Сериализованная форма будет обозначать серию выражений, совместное действие которых создаст эквивалентный объект при чтении входного потока. По умолчанию предполагается, что объект является объектом JavaBean с конструктором без параметров, состояние которого определяется соответствующими парами методов «setter» и «getter», возвращаемыми классом Introspector.
- Параметры:
-
o— Объект, который необходимо записать в поток. - См. также:
XMLDecoder.readObject()
setExceptionListener
public void setExceptionListener(ExceptionListener exceptionListener)
Устанавливает обработчик исключений для этого потока в exceptionListener . Обработчик исключений уведомляется, когда этот поток перехватывает исправляемые исключения.
- Параметры:
-
exceptionListener— Обработчик исключений для этого потока; еслиnull, будет использоваться обработчик исключений по умолчанию. - См. также:
getExceptionListener()
getExceptionListener
public ExceptionListener getExceptionListener()
Получает обработчик исключений для этого потока.
- Возвращает:
- Обработчик исключений для этого потока; Вернёт обработчик исключений по умолчанию, если он не был явно установлен.
- См. также:
setExceptionListener(java.beans.ExceptionListener)
getPersistenceDelegate
public PersistenceDelegate getPersistenceDelegate(Class<?> type)
Возвращает делегата сохранения для данного типа. Делегат сохранения рассчитывается путём применения следующих правил в порядке их следования:
- Если делегат сохранения связан с данным типом с помощью метода
setPersistenceDelegate(java.lang.Class<?>, java.beans.PersistenceDelegate), то он возвращается. - Затем делегат сохранения ищется по имени, составленному из полного квалифицированного имени данного типа и постфикса "PersistenceDelegate". Например, делегат сохранения для класса
Beanдолжен иметь имяBeanPersistenceDelegateи располагаться в той же папке.public class Bean { ... } public class BeanPersistenceDelegate { ... }Экземпляр классаBeanPersistenceDelegateвозвращается для классаBean. - Если тип является
null, возвращается общий внутренний делегат сохранения, кодирующий значениеnull. - Если тип является объявлением
enum, возвращается общий внутренний делегат сохранения, кодирующий константы этой перечисления по их именам. - Если тип является примитивным типом или соответствующим обёрткой, возвращается общий внутренний делегат сохранения, кодирующий значения данного типа.
- Если тип является массивом, возвращается общий внутренний делегат сохранения, кодирующий массив соответствующего типа и длины, а каждый его элемент — как если бы они были свойствами.
- Если тип является прокси, возвращается общий внутренний делегат сохранения, кодирующий экземпляр прокси с использованием метода
Proxy.newProxyInstance(java.lang.ClassLoader, java.lang.Class<?>[], java.lang.reflect.InvocationHandler). - Если у
BeanInfoдля этого типа естьBeanDescriptor, который определил атрибут "persistenceDelegate", то возвращается значение этого именованного атрибута. - Во всех остальных случаях возвращается делегат сохранения по умолчанию. Делегат сохранения по умолчанию предполагает, что тип является JavaBean, подразумевая, что у него есть конструктор по умолчанию и что его состояние может быть охарактеризовано соответствующими парами методов «setter» и «getter», возвращаемыми классом
Introspector. Конструктор по умолчанию — это конструктор с наибольшим числом параметров, имеющий аннотациюConstructorProperties. Если ни один из конструкторов не имеет аннотацииConstructorProperties, то будет использоваться конструктор без параметров (конструктор с нулевыми параметрами). Например, в следующем фрагменте кода будет использоваться конструктор без параметров для классаFoo, а для классаBar— конструктор с двумя параметрами.public class Foo { public Foo() { ... } public Foo(int x) { ... } } public class Bar { public Bar() { ... } @ConstructorProperties({"x"}) public Bar(int x) { ... } @ConstructorProperties({"x", "y"}) public Bar(int x, int y) { ... } }
- Параметры:
-
type— класс объектов - Возвращает:
- делегат сохранения для данного типа
- См. также:
-
setPersistenceDelegate(java.lang.Class<?>, java.beans.PersistenceDelegate),Introspector.getBeanInfo(java.lang.Class<?>),BeanInfo.getBeanDescriptor()
setPersistenceDelegate
public void setPersistenceDelegate(Class<?> type,
PersistenceDelegate delegate)
Связывает указанный делегат сохранения с данным типом.
- Параметры:
-
type— класс объектов, к которым применяется указанный делегат сохранения -
delegate— делегат сохранения для экземпляров данного типа - См. также:
-
getPersistenceDelegate(java.lang.Class<?>),Introspector.getBeanInfo(java.lang.Class<?>),BeanInfo.getBeanDescriptor()
remove
public Object remove(Object oldInstance)
Удаляет запись для этого экземпляра, возвращая старую запись.
- Параметры:
-
oldInstance— Запись, которая должна быть удалена. - Возвращает:
- Запись, которая была удалена.
- См. также:
get(java.lang.Object)
get
public Object get(Object oldInstance)
Возвращает предварительное значение для oldInstance в среде, созданной этим потоком. Делегат сохранения может использовать метод mutatesTo для определения, может ли это значение быть инициализировано для формирования эквивалентного объекта на выходе, или же необходимо создать новый объект заново. Если поток ещё не видел это значение, возвращается null.
- Параметры:
-
oldInstance— Экземпляр, который необходимо найти. - Возвращает:
- Объект, null, если объект ещё не виден ранее.
writeStatement
public void writeStatement(Statement oldStm)
Записывает утверждение oldStm в поток. oldStm должен быть записан полностью в терминах среды вызывающего, то есть цель и все аргументы должны быть частью графа объектов, которые записываются. Эти выражения представляют собой серию выражений «что произошло», которые сообщают потоку вывода, как произвести граф объектов, аналогичный исходному.
Реализация этого метода создаст второе выражение для представления того же выражения в среде, которая будет существовать при чтении потока. Это достигается путём вызова writeObject для цели и всех аргументов и создания нового выражения с результатами.
- Параметры:
-
oldStm— Выражение, которое нужно записать в поток.
writeExpression
public void writeExpression(Expression oldExp)
Реализация сначала проверяет, не было ли уже записано выражение с этим значением. Если нет, выражение клонируется, используя ту же процедуру, что и writeStatement, и значение этого выражения согласовывается со значением клонированного выражения путём вызова writeObject.
- Параметры:
-
oldExp— Выражение, которое нужно записать в поток.
© 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/Encoder.html