org.sfm.reflect.PropertyMeta Maven / Gradle / Ivy
package org.sfm.reflect;
public abstract class PropertyMeta {
private final String name;
protected final ReflectionService reflectService;
private volatile Setter setter;
private volatile ClassMeta classMeta;
public PropertyMeta(String name, ReflectionService reflectService) {
this.name = name;
this.reflectService = reflectService;
}
public final Setter getSetter() {
Setter lsetter = setter;
if (lsetter == null) {
lsetter = newSetter();
setter = lsetter;
}
return lsetter;
}
protected abstract Setter newSetter();
public final String getName() {
return name;
}
public abstract Class getType();
public final ClassMeta getClassMeta() {
ClassMeta meta = classMeta;
if (meta == null) {
meta = new ClassMeta<>(name, getType(), reflectService);
classMeta = meta;
}
return meta;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy