in src/main/java/org/apache/bcel/classfile/JavaClass.java [418:448]
public Field findField(final String fieldName, final Type fieldType) throws ClassNotFoundException {
for (final Field field : fields) {
if (field.getName().equals(fieldName)) {
final Type fType = Type.getType(field.getSignature());
/*
* TODO: Check if assignment compatibility is sufficient. What does Sun do?
*/
if (fType.equals(fieldType)) {
return field;
}
}
}
final JavaClass superclass = getSuperClass();
if (superclass != null && !"java.lang.Object".equals(superclass.getClassName())) {
final Field f = superclass.findField(fieldName, fieldType);
if (f != null && (f.isPublic() || f.isProtected() || !f.isPrivate() && packageName.equals(superclass.getPackageName()))) {
return f;
}
}
final JavaClass[] implementedInterfaces = getInterfaces();
if (implementedInterfaces != null) {
for (final JavaClass implementedInterface : implementedInterfaces) {
final Field f = implementedInterface.findField(fieldName, fieldType);
if (f != null) {
return f;
}
}
}
return null;
}