Ask yourself how many times you've written (or had an IDE generate) something similar to:
public class AtomImpl implements IAtom {
private String property1;
private int property2;
private boolean property3;
@Override
public String getProperty1() {
return property1;
}
@Override
public int getProperty2() {
return property2;
}
@Override
public boolean isProperty3() {
return property3;
}
@Override
public void setProperty3(boolean property3) {
this.property3 = property3;
}
}
This project enables developers to easily generate proxies implementing atomic interfaces at runtime. Now to create an instance of IAtom you can simply write:
IAtom atom = (IAtom)AtomProxyBuilder.implement(IAtom.class).addProperties("property1", "1st property", "property2", 2, "property3", true).createProxy();
NOTE: guava and junit4 are required by this library.
Features
- Assumes standard Java Bean method naming conventions without requiring that interfaces be in full Java Bean compliance.
- Checks property states by default on proxy construction, thereby helping developers (painlessly) detect code breakage after refactoring. These "checks" can also be disabled.
- Employs classic builder-pattern proxy construction.
- Supports implementing multiple interfaces at once.
- Supports implementing interfaces that extend multiple interfaces.
- Generated proxies have useful toString() methods. Developers can specifically exclude properties from being utilized by toString().
- Generated proxies are serializable if all property values are serializable.