Java BeanUtils - Ленивый DynaBeans
Описание
Lazy DynaBeans - это реализация DynaBean, которая дает характеристики Lazy List и Lazy Map, что связывает свойства DynaClass. Существует четыре типа Lazy DynaBeans:
LazyDynaBean: Он определяет ленивый DynaBean, который предоставляет динамически изменяемые свойства имен и типов данных.
LazyDynaMap: Это дает легкую реализацию DynaBean для сопоставления с использованием ленивой карты или системы списков.
LazyDynaList: Предоставляет список для DynaBean, Map или POJOS (обычный старый объект Java, который определяет обычный класс java).
LazyDynaClass: Реализует интерфейс MutableDynaClass.
Ниже перечислены особенности Lazy DynaBeans:
Lazy property addition: Он используется Lazy beans для автоматического добавления свойства в DynaClass при вызове метода set, и он имеет возможность добавлять или удалять свойства DynaClass.
Lazy List/Array growth: Ленивый список или массив будет расти автоматически, если индексируемое свойство не может вместить устанавливаемый индекс.
Lazy List/Array instantiation: Методы получения и установки индексированного свойства в DynaBean приводят к созданию ленивого списка или экземпляра массива, если индексированного свойства не существует. Если проиндексированное свойство не определено, оно будет автоматически добавлено в DynaClass и будет создан экземпляр реализации списка по умолчанию.
Lazy Map instantiation: Методы получения и установки сопоставленного свойства в DynaBean приводят к ленивому созданию экземпляра сопоставления, если сопоставленное свойство не существует. Если сопоставленное свойство не определено, оно будет автоматически добавлено в DynaClass и будет создан экземпляр реализации карты по умолчанию.
Lazy Bean instantiation: LazyDynaBean создает экземпляр bean-компонента с использованием пустого конструктора по умолчанию, если свойство DynaClass определено как DynaBean или обычный bean-компонент и не существует в DynaBean.
LazyDynaBean
Это реализация стандартного ленивого bean-компонента, который определяет ленивый компонент DynaBean, который предоставляет динамически изменяемые свойства имен и типов данных. Он реализует интерфейс MutableDynaClass , связываясь с LazyDynaClass . В приведенном ниже простом коде показано использование LazyDynaBean с использованием геттеров или сеттеров:
DynaBean dynaBean = new LazyDynaBean();
dynaBean.set("company", "Model"); // simple
dynaBean.set("customer", "fname", "Steve"); // mapped
dynaBean.set("customer", "lname", "Smith"); // mapped
dynaBean.set("address", 0, addressLine1); // indexed
dynaBean.set("address", 1, addressLine2); // indexed
LazyDynaMap
Это упрощает реализацию DynaBean для сопоставления с использованием ленивых карт или систем списков и не связывает со свойствами DynaClass. Он сам реализует интерфейс DynaClass и получает информацию о DynaClass из содержимого карты. LazyDynaMap создает свою собственную карту путем ее создания или может быть сгенерирована вокруг существующей карты.
В приведенном ниже коде показано создание новой карты:
DynaBean dynaBean = new LazyDynaBean();
DynaBean dynaBean = new LazyDynaMap(); // create DynaBean
dynaBean.set("company", "Model"); // simple
dynaBean.set("customer", "fname", "Steve"); // mapped
dynaBean.set("address", 0, addressLine1); // indexed
Map demoMap = dynaBean.getMap() // retrieve the Map
В приведенном ниже коде показано использование существующей карты в DynaBean:
Map demoMap = .... // exisitng Map
DynaBean dynaBean = new LazyDynaMap(demoMap); // wrap Map in DynaBean
dynaBean.set("ford", "raptor"); // set properties
LazyDynaList
Он предоставляет список для DynaBean, Map или POJOS (обычный старый объект Java, который указывает нормальный класс Java). Есть два основных пункта этого класса:
Он автоматически увеличивается и занимает список с DynaBean, java.util.Map или POJOS, чтобы указать поведение Lazy List.
Он предоставляет простой способ поместить коллекцию или массив в список отложенных запросов и простой способ выйти из списка отложенных.
LazyDynaClass
Он реализует интерфейс MutableDynaClass и расширяет BasicDynaClass . Он может использоваться как DynaClass по умолчанию в LazyDynaBean и в других реализациях DynaBean. Когда вы используете LazyDynaBean, с DynaClass нечего делать.
Приведенный ниже код создает LazyDynaClass:
MutableDynaClass dynaClass = new LazyDynaClass(); // create DynaClass
dynaClass.add("price", java.lang.Integer.class); // add property
dynaClass.add("orders", OrderBean[].class); // add indexed property
dynaClass.add("orders", java.util.TreeMapp.class); // add mapped property
DynaBean dynaBean = new LazyDynaBean(dynaClass); // Create DynaBean with associated DynaClass
Приведенный ниже код создает LazyDynaBean и получает DynaClass:
DynaBean dynaBean = new LazyDynaBean(); // Create LazyDynaBean
MutableDynaClass dynaClass =
(MutableDynaClass)dynaBean.getDynaClass(); // get DynaClass
dynaClass.add("price", java.lang.Integer.class); // add property
dynaClass.add("exBeans", myPackage.MyBean[].class); // add 'array' indexed property
dynaClass.add("exMap", java.util.TreeMapp.class); // add mapped property