package org.etk.reflect.jlr.metadata; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.lang.reflect.Type; import java.util.Arrays; import org.etk.reflect.api.metadata.FieldMetadata; import org.etk.reflect.core.AccessScope; /** * Define the Java language FieldMedata, * which provides the information for field. * * @author thanh_vucong * */ public class JLReflectionFieldMetadata implements FieldMetadata<Type, Field> { public Iterable<Field> getDeclaredFields(Type classType) { Class<?> clazz = (Class<?>)classType; return Arrays.asList(clazz.getDeclaredFields()); } public Type getType(Field field) { return field.getGenericType(); } public String getName(Field field) { return field.getName(); } public AccessScope getAccess(Field field) { return JLReflectionMetadata.getAccess(field); } public boolean isStatic(Field field) { return Modifier.isStatic(field.getModifiers()); } public boolean isFinal(Field field) { return Modifier.isFinal(field.getModifiers()); } public Type getOwner(Field field) { return field.getDeclaringClass(); } }