package org.etk.reflect.api; import java.util.Collection; import java.util.List; import org.etk.reflect.api.annotation.Annotated; import org.etk.reflect.api.definition.ClassKind; /** * * @author thanh_vucong * */ public interface ClassTypeInfo extends TypeInfo, GenericDeclarationInfo, Annotated { /** * Return the name with package name of the class which represented by the <code>ClassTypeInfo</code> * as a <tt>String</tt> * @return */ String getName(); /** * * @return */ String getSimpleName(); ClassTypeInfo getEnclosing(); /** * * @return */ String getPackageName(); /** * * @return */ ClassKind getKind(); Iterable<TypeInfo> getInterfaces(); /** * * @return */ TypeInfo getSuperType(); /** * * @return */ ClassTypeInfo getSuperClass(); /** * * @param type * @return */ TypeInfo resolve(TypeInfo type); /** * Retrieving the Methods which belong to the current class. * @return */ List<MethodInfo> getDeclaredMethods(); /** * Retrieving the MethodInfo base on the MethodSignature. * @param signature * @return */ MethodInfo getDeclaredMethod(MethodSignature signature); /** * Retrieving the Fields which belong to the current classType * @return */ Collection<FieldInfo> getDeclaredFields(); /** * Retrieving the Field base on the fieldName * @param fieldName * @return */ FieldInfo getDeclaredField(String fieldName); /** * * @param that * @return */ boolean isAssignableFrom(ClassTypeInfo that); }