@Override public <T extends Annotation> T getAnnotation(final Class<T> annotationClass) { return _baseField.getAnnotation(annotationClass); }
public FieldInfo visitField(final Type<?> declaringType, final FieldInfo field, final TypeBindings bindings) { final Type<?> oldFieldType = field.getFieldType(); final Type<?> newFieldType = visit(field.getFieldType(), bindings); if (TypeUtils.areEquivalent(oldFieldType, newFieldType) && TypeUtils.areEquivalent(field.getDeclaringType(), declaringType)) { return field; } return new ReflectedField( declaringType, field.getReflectedType(), field.getRawField(), newFieldType ); }
public static RuntimeException rawFieldBindingFailure(final FieldInfo field) { return new IllegalStateException( format( "Could not bind to runtime field '%s' on type '%s'.", field.getDescription(), field.getDeclaringType().toString() ) ); }
@Override public StringBuilder appendErasedDescription(final StringBuilder sb) { StringBuilder s = sb; for (final javax.lang.model.element.Modifier modifier : Flags.asModifierSet(getModifiers())) { s.append(modifier.toString()); s.append(' '); } s = getFieldType().getErasedType().appendErasedDescription(s); s.append(' '); s.append(getName()); return s; }
@Override public StringBuilder appendBriefDescription(final StringBuilder sb) { StringBuilder s = sb; if (isStatic()) { s.append(Modifier.STATIC.toString()); s.append(' '); } final Type fieldType = getFieldType(); if (fieldType.isGenericParameter()) { s.append(fieldType.getName()); } else { s = fieldType.appendBriefDescription(s); } s.append(' '); s.append(getName()); return s; }
final FieldInfo addField(final FieldInfo field) { final ArrayList<T> list = new ArrayList<>(1); final int modifiers = VerifyArgument.notNull(field, "field").getModifiers(); final boolean isPublic = Modifier.isPublic(modifiers); final boolean isStatic = Modifier.isStatic(modifiers); final Type declaringType = field.getDeclaringType(); final boolean isInherited = !Comparer.equals(declaringType, getReflectedType()); final Set<BindingFlags> bindingFlags = Type.filterPreCalculate(isPublic, isInherited, isStatic); list.add( (T) new RuntimeFieldInfo( field.getRawField(), declaringType, _typeCache, modifiers, bindingFlags, field.getFieldType() ) ); return (FieldInfo) insert(list, null, MemberListType.HandleToInfo).get(0); }
final FieldInfo declaredField = declaredFields.get(i); if (!filter.match(declaredField.getName())) { continue; assert declaredField.getFieldType() != Type.NullType; final int fieldModifiers = declaredField.getModifiers(); declaredField.getRawField(), declaringType, _typeCache, fieldModifiers, bindingFlags, declaredField.getFieldType() );
public FieldReference getFieldReference(final FieldInfo field) { final TypeInfo typeInfo = getTypeInfo(field.getDeclaringType()); final NameAndTypeDescriptor nameAndDescriptor = getNameAndTypeDescriptor( field.getName(), field.getErasedSignature() ); _lookupKey.set(Tag.FieldReference, typeInfo.index, nameAndDescriptor.index); Entry entry = _entryMap.get(_lookupKey); if (entry == null) { entry = new FieldReference(this, typeInfo.index, nameAndDescriptor.index); } _lookupKey.clear(); return (FieldReference)entry; }
@Override public Field getRawField() { return _baseField.getRawField(); }
public FieldInfo visitField(final Type<?> declaringType, final FieldInfo field, final TypeBindings bindings) { final Type<?> oldFieldType = field.getFieldType(); final Type<?> newFieldType = visit(field.getFieldType(), bindings); final Type<?> actualDeclaringType; final Type oldDeclaringType = field.getDeclaringType(); if (!TypeUtils.areEquivalent(oldDeclaringType, declaringType) && oldDeclaringType.isGenericTypeDefinition() && declaringType.isGenericType() && TypeUtils.areEquivalent(oldDeclaringType, declaringType.getGenericTypeDefinition())) { actualDeclaringType = declaringType; } else { actualDeclaringType = oldDeclaringType; } if (TypeUtils.areEquivalent(oldFieldType, newFieldType) && TypeUtils.areEquivalent(actualDeclaringType, declaringType)) { return field; } return new ReflectedField(actualDeclaringType, field.getRawField(), newFieldType); }
@Override public Type getFieldType() { if (generatedField != null) { return generatedField.getFieldType(); } return _type; }
private static FieldInfo erase(final FieldInfo f) { if (!f.getDeclaringType().isGenericType()) { return f; } final Type<?> erasedType = erase(f.getDeclaringType()); final Object rawField = f.getRawField(); final MemberList<?> members = erasedType.findMembers( MemberType.fieldsOnly(), BindingFlags.AllDeclared, Type.FilterRawMember, rawField ); if (!members.isEmpty()) { return (FieldInfo) members.get(0); } throw ContractUtils.unreachable(); }
@Override public FieldInfo visitField(final Type<?> declaringType, final FieldInfo field, final TypeBindings bindings) { final Type<?> oldFieldType = field.getFieldType(); final Type<?> newFieldType = visit(field.getFieldType(), bindings); if (TypeUtils.areEquivalent(oldFieldType, newFieldType) && TypeUtils.areEquivalent(field.getDeclaringType(), declaringType)) { return field; } return new ErasedField( field, declaringType, newFieldType ); }
@Override public boolean isAnnotationPresent(final Class<? extends Annotation> annotationClass) { return _baseField.isAnnotationPresent(annotationClass); }
@NotNull @Override public Annotation[] getAnnotations() { return _baseField.getAnnotations(); }
public boolean isEnumConstant() { return (getModifiers() & Type.ENUM_MODIFIER) == Type.ENUM_MODIFIER; }
@Override public String getName() { return _baseField.getName(); }
@Override public String toString() { return getDescription(); }
final Type candidateDeclaringType = candidate.getDeclaringType(); final Type matchDeclaringType = match.getDeclaringType(); if (match == null || candidateDeclaringType.isSubTypeOf(match.getDeclaringType()) || match.getDeclaringType().isInterface()) { match = candidate; if (multipleStaticFieldMatches && match.getDeclaringType().isInterface()) { throw Error.ambiguousMatch();
@Override public StringBuilder appendErasedDescription(final StringBuilder sb) { StringBuilder s = sb; for (final javax.lang.model.element.Modifier modifier : Flags.asModifierSet(getModifiers())) { s.append(modifier.toString()); s.append(' '); } s = getFieldType().getErasedType().appendErasedDescription(s); s.append(' '); s.append(getName()); return s; }