如果需要进行多次访问,则可以预处理注释。
public class ColumnExtracter<T> { private final Map<String, Field> fieldsByColumn; public ColumnExtracter(Class<T> clazz) { this.fieldsByColumn = Stream.of(clazz.getDeclaredFields()) .filter(field -> field.isAnnotationPresent(Column.class)) .collect(Collectors.toMap(field -> field.getAnnotation(Column.class).name(), Function.identity())); } public Field getColumnField(String columnName) { return fieldsByColumn.get(columnName); } public <R> R extract(String columnName, T t, Class<R> clazz) throws IllegalAccessException { return clazz.cast(extract(columnName, t)); } public Object extract(String columnName, T t) throws IllegalAccessException { return getColumnField(columnName).get(t); }}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)