На основе TypeDefinition (например, инструментированного типа) я хочу быстро найти FieldDescription для защищенной переменной. Я знаю, что переменная есть в одном из суперклассов, но я не знаю точно, в каком из них. Вот упрощенный пример:
class C1 { protected int id; }
class C2 extends C1 {}
На основе typeDefinitionC1 = TypeDescription.ForLoadedType.of (C1.class) я могу найти поле, выполнив что-то вроде этого:
typeDefinitionC1.getDeclaredFields().filter(named("id")).getOnly()
Но, используя определение типа для C2, оно не работает, потому что поле не объявлено в C2. Я написал небольшую функцию для перебора всех суперклассов, чтобы найти поле, но я ожидаю, что ByteBuddy позволит мне сделать что-то вроде:
typeDefinitionC2.getFields().filter(named("id").and(isProtected())).getOnly()
Есть ли какой-нибудь удобный способ сделать это?