javapoet-android#View on GitHub
JavaPoet generate Android common codes
Source code
@PoetCode
public class Person {
private String name;
private int age;
}
Generate PcsBean
- field
public static FieldSpec createPcsField() {
FieldSpec.Builder pcsField = FieldSpec.builder(PropertyChangeSupport.class, "pcs")
.addModifiers(Modifier.PRIVATE, Modifier.FINAL)
.initializer("new $T(this)", PropertyChangeSupport.class);
return pcsField.build();
}
--------------------------------------------------------------------------------
private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
- get()
public static MethodSpec createGet(String fieldName, TypeName fieldType, Modifier... modifiers) {
String methodName = "get" + upperFirstChar(fieldName);
MethodSpec.Builder method = MethodSpec.methodBuilder(methodName)
.addModifiers(modifiers)
.returns(fieldType)
.addStatement("return " + fieldName);
return method.build();
}
--------------------------------------------------------------------------------
public String getName() {
return name;
}
- set()
public static MethodSpec createPcsSet(String fieldName, TypeName fieldType, Modifier... modifiers) {
String methodName = "set" + upperFirstChar(fieldName);
MethodSpec.Builder method = MethodSpec.methodBuilder(methodName)
.addModifiers(modifiers)
.addParameter(fieldType, fieldName)
.addStatement("$T old$L = this.$L",fieldType,fieldName,fieldName)
.addStatement("this.$L = $L", fieldName, fieldName)
.addStatement("this.pcs.firePropertyChange($S,old$L,$L)",fieldName,fieldName,fieldName);
return method.build();
}
--------------------------------------------------------------------------------
public void setName(String name) {
String oldname = this.name;
this.name = name;
this.pcs.firePropertyChange("name",oldname,name);
}
- add listener
public static MethodSpec createAddListenerMethod() {
MethodSpec.Builder pcsMethod = MethodSpec.methodBuilder("addPropertyChangeListener")
.addModifiers(Modifier.PUBLIC)
.addParameter(PropertyChangeListener.class,"listener")
.addStatement("this.pcs.addPropertyChangeListener(listener)");
return pcsMethod.build();
}
--------------------------------------------------------------------------------
public void addPropertyChangeListener(PropertyChangeListener listener) {
this.pcs.addPropertyChangeListener(listener);
}
- remove listener
public static MethodSpec createRemoveListenerMethod() {
MethodSpec.Builder pcsMethod = MethodSpec.methodBuilder("removePropertyChangeListener")
.addModifiers(Modifier.PUBLIC)
.addParameter(PropertyChangeListener.class,"listener")
.addStatement("this.pcs.removePropertyChangeListener(listener)");
return pcsMethod.build();
}
--------------------------------------------------------------------------------
public void removePropertyChangeListener(PropertyChangeListener listener) {
this.pcs.removePropertyChangeListener(listener);
}