com.fasterxml.classmate.members.ResolvedMember Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of classmate Show documentation
Show all versions of classmate Show documentation
Library for introspecting types with full generic information
including resolving of field and method types.
package com.fasterxml.classmate.members;
import java.lang.annotation.Annotation;
import java.lang.reflect.Member;
import java.lang.reflect.Modifier;
import com.fasterxml.classmate.Annotations;
import com.fasterxml.classmate.ResolvedType;
/**
* Fully type-resolved equivalent of {@link RawMember}. Only members "that matter" (ones not
* overridden, or filtered out) are resolved, since resolution process can add non-trivial
* overhead.
*/
public abstract class ResolvedMember
{
/**
* {@link ResolvedType} (class with generic type parameters) that declared
* this member
*/
protected final ResolvedType _declaringType;
protected final Annotations _annotations;
protected final T _member;
protected final ResolvedType _type;
protected final int _hashCode;
/*
/**********************************************************************
/* Life cycle
/**********************************************************************
*/
protected ResolvedMember(ResolvedType context, Annotations ann, T member, ResolvedType type)
{
_declaringType = context;
_annotations = ann;
_member = member;
_type = type;
_hashCode = (_member == null ? 0 : _member.hashCode());
}
public void applyOverride(Annotation override)
{
_annotations.add(override);
}
public void applyOverrides(Annotations overrides)
{
_annotations.addAll(overrides);
}
public void applyDefault(Annotation override)
{
_annotations.addAsDefault(override);
}
public A get(Class cls)
{
return _annotations.get(cls);
}
public Annotations getAnnotations()
{
return _annotations;
}
/*
/**********************************************************************
/* Simple accessors
/**********************************************************************
*/
public final ResolvedType getDeclaringType() {
return _declaringType;
}
/**
* Returns type of this member; if it has one, for methods this is the
* return type, for fields field type, and for constructors null.
*/
public ResolvedType getType() {
return _type;
}
/**
* Returns JDK object that represents member.
*/
public T getRawMember() {
return _member;
}
public String getName() {
return getRawMember().getName();
}
public boolean isStatic() {
return Modifier.isStatic(getModifiers());
}
public boolean isFinal() {
return Modifier.isFinal(getModifiers());
}
public boolean isPrivate() {
return Modifier.isPrivate(getModifiers());
}
public boolean isProtected() {
return Modifier.isProtected(getModifiers());
}
public boolean isPublic() {
return Modifier.isPublic(getModifiers());
}
/*
/**********************************************************************
/* Standard method overrides
/**********************************************************************
*/
@Override public String toString() {
return getName();
}
/*
/**********************************************************************
/* Package methods
/**********************************************************************
*/
protected final int getModifiers() { return getRawMember().getModifiers(); }
/*
/**********************************************************************
/* Standard methods
/**********************************************************************
*/
@Override public int hashCode() {
return _hashCode;
}
@Override public boolean equals(Object o)
{
if (o == this) return true;
if (o == null || o.getClass() != getClass()) return false;
ResolvedMember> other = (ResolvedMember>) o;
return (other._member == _member);
}
}