Seminář 11 - Reflexe
Zdroje
- Texty dr. Krajči k semináři o reflexi
- Tutoriál k reflexi.
- Herbert Schildt, 2022
- Java, The complete Reference, Twelfth Edition
- Knihovna PřF: M2/1756
- Part I, Chapter 12 ( … and Annotations)
- pp. 295 – 315
- Ukázka z hodiny.
Úkol č. 11
- Vyřešené úkoly ukažte na posledním semináři (6.5.2025).
Zadání
- Navrhněte anotace, které vám usnadní serializaci a deserializaci jednoduchých objektů do formátu XML. Předpokládejte, že objekty mají bezparametrický konstruktor a pomocí parametru anotace je určený element XML dokumentu pro danou hodnotu.
Metody třídy by mělo být možné označit následovně:
@Serialize(as = "emp")
@Deserialize(as = "emp")
class Employee {
private String name;
private int age;
private double salary;
public Employee() { }
@Deserialize(as = "name")
public void setName(String name) {
this.name = name;
}
@Serialize(as = "name")
public String getName() {
return this.name;
}
@Deserialize(as = "age")
public void setAge(int age) {
this.age = age;
}
@Serialize(as = "age")
public int getAge() {
return this.age;
}
@Deserialize(as = "income")
public void setSalary(int salary) {
this.salary = salary;
}
@Serialize(as = "income")
public int getSalary() {
return this.salary;
}
}
- Implementujte třídu Serializer mající metodu void serialize(Object obj), která využije anotací a vygeneruje XML soubor ve tvaru:
emp>
<name>Tomas Marny</name>
<income>58000</income>
<age>42</age>
<emp> </
- Implementujte třídu Deserializer mající metodu Object deserialize(), která z XML souboru vytvoří daný objekt.
Poznámky
- Třídy Serializer a Deserializer by měly být obecné, tj. musí ukládat nebo načítat libovolné objekty vybavené příslušnými anotacemi. Seznam tříd, se kterými třída Deserializer bude umět pracovat, by jí měl být předán v konstruktoru.
- Můžete použít libovolnou knihovnu pro práci s XML.