Java BeanUtils - Lazy DynaBeans

Opis

Lazy DynaBeans jest implementacją DynaBean, która nadaje cechy Lazy List i Lazy Map, co łączy właściwości DynaClass. Istnieją cztery rodzaje Lazy DynaBeans:

  • LazyDynaBean: Określa leniwy DynaBean, który zapewnia dynamicznie modyfikowane właściwości nazw i typów danych.

  • LazyDynaMap: Daje lekką implementację DynaBean do mapowania przy użyciu leniwego systemu map lub list.

  • LazyDynaList: Zawiera listę dla DynaBean, Map lub POJOS (zwykły stary obiekt Java, który określa normalną klasę Java).

  • LazyDynaClass: Implementuje interfejs MutableDynaClass.

Oto cechy Lazy DynaBeans:

  • Lazy property addition: Jest używany przez Lazy beans do automatycznego dodawania właściwości do DynaClass po wywołaniu metody set i ma możliwość dodawania lub usuwania właściwości DynaClass.

  • Lazy List/Array growth: Lista lub tablica leniwych rośnie automatycznie, gdy indeksowana właściwość nie jest w stanie pomieścić ustawianego indeksu.

  • Lazy List/Array instantiation: Metody pobierające i ustawiające właściwości indeksowane DynaBean powodują utworzenie leniwej listy lub instancji tablicy, jeśli nie istnieje indeksowana właściwość. Jeśli indeksowana właściwość nie jest zdefiniowana, zostanie automatycznie dodana do DynaClass i zostanie utworzona domyślna implementacja listy.

  • Lazy Map instantiation: Metody pobierające i ustawiające odwzorowaną właściwość DynaBean powodują leniwe tworzenie instancji mapy, jeśli nie istnieje odwzorowana właściwość. Jeśli mapowana właściwość nie jest zdefiniowana, zostanie automatycznie dodana do DynaClass i zostanie utworzona domyślna implementacja Map.

  • Lazy Bean instantiation: LazyDynaBean utworzy instancję beana przy użyciu domyślnego pustego konstruktora, jeśli właściwość DynaClass jest zdefiniowana jako DynaBean lub zwykła fasola i nie istnieje w DynaBean.

LazyDynaBean

Jest to implementacja standardowego leniwego beana, który określa leniwy DynaBean, który zapewnia dynamicznie modyfikowane właściwości nazw i typów danych. Implementuje interfejs MutableDynaClass poprzez skojarzenie z LazyDynaClass . Poniższy prosty kod przedstawia użycie LazyDynaBean przy użyciu metod pobierających lub ustawiających:

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

Daje lekką implementację DynaBean do mapowania przy użyciu leniwego systemu map lub list i nie wiąże się z właściwościami DynaClass. Sama implementuje interfejs DynaClass i uzyskuje informacje o DynaClass z zawartości mapy. LazyDynaMap tworzy własną mapę, tworząc jej instancję lub może zostać wygenerowana wokół istniejącej mapy.

Poniższy kod przedstawia tworzenie nowej mapy:

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

Poniższy kod przedstawia użycie istniejącej mapy w DynaBean:

Map demoMap = ....                               // exisitng Map
 DynaBean dynaBean = new LazyDynaMap(demoMap);    // wrap Map in DynaBean
 dynaBean.set("ford", "raptor");                  // set properties

LazyDynaList

Zawiera listę dla DynaBean, Map lub POJOS (zwykły stary obiekt Java, który określa normalną klasę Java). Istnieją dwa główne punkty tej klasy:

  • Automatycznie rośnie i zajmuje listę DynaBean, java.util.Map lub POJOS, aby określić zachowanie Lazy List.

  • Zapewnia łatwy sposób umieszczenia kolekcji lub tablicy na liście leniwych i łatwy sposób wyjścia z listy leniwych.

LazyDynaClass

Implementuje interfejs MutableDynaClass i rozszerza BasicDynaClass . Może być używany jako domyślny DynaClass przez LazyDynaBean oraz z innymi implementacjami DynaBean. Nie ma nic do czynienia z DynaClass, gdy używasz LazyDynaBean.

Poniższy kod tworzy 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

Poniższy kod tworzy LazyDynaBean i pobiera 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