Java Bean Components Java
To convert fields/values of an object to key/value pair of java.util.Properties, we can use
JavaBean component API. The target object should follow JavaBean conventions.
Following code demonstrates how to do that.
public class BeanUtil {
public static <T> Properties toProperties (T t) throws Exception {
Class<T> c = (Class<T>) t.getClass();
BeanInfo beanInfo = Introspector.getBeanInfo(c);
Properties p = new Properties();
for (PropertyDescriptor pd : beanInfo.getPropertyDescriptors()) {
String name = pd.getName();
Object o = pd.getReadMethod().invoke(t);
if (o != null)
p.setProperty(name, o == null ? null : o.toString());
}
return p;
}
}
Let's test above code with an example object:
public class Person {
private String id;
private String name;
private String address;
public Person (String id, String name, String address) {
this.id = id;
this.name = name;
this.address = address;
}
public String getId () {
return id;
}
public void setId (String id) {
this.id = id;
}
public String getName () {
return name;
}
public void setName (String name) {
this.name = name;
}
public String getAddress () {
return address;
}
public void setAddress (String address) {
this.address = address;
}
@Override
public boolean equals (Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
Person person = (Person) o;
return id != null ? id.equals(person.id) : person.id == null;
}
@Override
public int hashCode () {
return id != null ? id.hashCode() : 0;
}
}
public class Main {
public static void main (String[] args) throws Exception {
Person p = new Person("1", "Julia", "Coverdale dr, Dallas");
Properties properties = BeanUtil.toProperties(p);
System.out.println(properties);
}
} Output{address=Coverdale dr, Dallas, name=Julia, class=class com.logicbig.example.Person, id=1}
Example Project
Dependencies and Technologies Used:
|