org.sfm.reflect.meta.PropertyMeta Maven / Gradle / Ivy
package org.sfm.reflect.meta;
import java.lang.reflect.Type;
import org.sfm.reflect.ReflectionService;
import org.sfm.reflect.Setter;
import org.sfm.reflect.TypeHelper;
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 Type getType();
public final ClassMeta getClassMeta() {
ClassMeta meta = classMeta;
if (meta == null) {
meta = newClassMeta();
classMeta = meta;
}
return meta;
}
protected ClassMeta newClassMeta() {
return reflectService.getClassMeta(getType());
}
public boolean isPrimitive() {
return TypeHelper.isPrimitive(getType());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy