
com.moon.mapping.processing.BaseProperty Maven / Gradle / Ivy
package com.moon.mapping.processing;
import javax.lang.model.element.TypeElement;
import java.util.ArrayList;
import java.util.List;
/**
* @author benshaoye
*/
abstract class BaseProperty implements Mappable, TypeGetter, Completable {
/**
* 字段名
*/
private final String name;
/**
* 所在的声明类,如在类 A 中声明了属性 b,这个就是 A
*/
private final TypeElement enclosingElement;
/**
* 字段声明类型(可能是泛型){@link #actualType}
*/
private String declareType;
/**
* 字段实际类型,{@link #declareType}
*/
private String actualType;
/**
* 主要 setter
*/
private M setter;
/**
* 主要 getter
*/
private M getter;
/**
* 可能有重写的 setter,这里集中保存
*/
private List setterArr;
/**
* getter 方法不可能被重写,这里是为了和 setter 沿用统一结构
*/
private List getterArr;
BaseProperty(String name, TypeElement enclosingElement) {
this.enclosingElement = enclosingElement;
this.name = name;
}
public void setDeclareType(String declareType) { this.declareType = declareType; }
public void setActualType(String actualType) { this.actualType = actualType; }
public void setSetter(M setter) { this.setter = setter; }
public void setGetter(M getter) { this.getter = getter; }
public List getSetterArr() { return setterArr; }
public List getGetterArr() { return getterArr; }
public M getSetter() { return setter; }
public M getGetter() { return getter; }
public List ensureSetterArr() {
return setterArr == null ? (setterArr = new ArrayList<>()) : setterArr;
}
public List ensureGetterArr() {
return getterArr == null ? (getterArr = new ArrayList<>()) : getterArr;
}
@Override
public String getName() { return name; }
@Override
public String getActualType() { return actualType; }
@Override
public String getDeclareType() { return declareType; }
public TypeElement getEnclosingElement() { return enclosingElement; }
public String getEnclosingElementName() {
return ElementUtils.getQualifiedName(getEnclosingElement());
}
public void addSetterMethod(M setter) { ensureSetterArr().add(setter); }
public void addGetterMethod(M getter) { ensureGetterArr().add(getter); }
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy