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