Package net.sourceforge.javautil.common.reflection.cache

Source Code of net.sourceforge.javautil.common.reflection.cache.ClassMember

package net.sourceforge.javautil.common.reflection.cache;

import java.lang.annotation.Annotation;
import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Member;
import java.lang.reflect.Type;

import net.sourceforge.javautil.common.reflection.ReflectionContext;

/**
* Base class for members of a {@link ClassDescriptor}
*
* @author elponderador
* @author $Author: ponderator $
* @version $Id: ClassMember.java 2719 2011-01-11 04:07:57Z ponderator $
*/
public abstract class ClassMember {

  /**
   * The descriptor this is a member of
   */
  protected final ClassDescriptor descriptor;

  /**
   * @param descriptor The {@link #descriptor}
   */
  public ClassMember(ClassDescriptor descriptor) {
    this.descriptor = descriptor;
  }

  /**
   * @return The {@link #descriptor}
   */
  public ClassDescriptor getDescriptor() { return descriptor; }
 
  /**
   * @param <A> The type of annotation
   * @param type The class of the type
   * @return The instance on this member, or null if no such annotation was specified
   */
  public abstract <A extends Annotation> A getAnnotation (Class<A> type);
 
  /**
   * @return The annotations specified for this element
   */
  public abstract Annotation[] getAnnotations ();
 
  /**
   * @return The type of this member
   */
  public abstract Class getBaseType ();
 
  /**
   * @return The generic type of the member
   */
  public abstract Type getGenericType ();
 
  /**
   * This will make sure that the member is actually accessible.
   */
  public void ensureAccessibility () {
    Member member = this.getJavaMember();
    if (member instanceof AccessibleObject) {
      ReflectionContext.getReflectionManager().ensureAccesssibility( (AccessibleObject) member );
    }
  }
 
  /**
   * @return The java member this is for
   */
  public abstract Member getJavaMember ();
 
}
TOP

Related Classes of net.sourceforge.javautil.common.reflection.cache.ClassMember

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.