package org.etk.reflect.api.metadata; import org.etk.reflect.core.AccessScope; /** * A <code>FieldMetadata</code> provides information about, and dynamic access to, * a single field of a class or an interface. The reflected field may be a class(static) * field or an instance field. * * @author thanh_vucong * * @param <T> TypeInfo * @param <F> FieldInfo. */ public interface FieldMetadata<T, F> { /** * Identifies the set of members of a class or interface. * Inherited members are not included. * * @param classType * @return */ Iterable<F> getDeclaredFields(T classType); /** * Returns the simple name of member or constructor represented * by this Field. * * @param f Field which provides to get the name. * @return The simple file name */ String getName(F f); /** * Returns the Java language modifiers for the field represented * by this <code>FieldMetadata</code> object. * * @param f * @return */ AccessScope getAccess(F f); /** * Return a Class object that identifies the declared type for the field * represented by this <code>FieldMetadata</code> object * * @param f Field which provides to get Type. * @return */ T getType(F f); boolean isStatic(F f); boolean isFinal(F f); T getOwner(F f); }